이재하

Single Cycle CPU

1 +module ALU(aluin1, aluin2, aluctrl, aluout, alubranch);
2 +
3 +input[31:0] aluin1, aluin2;
4 +input[3:0] aluctrl;
5 +output reg[31:0] aluout;
6 +output alubranch;
7 +
8 +reg overflow;
9 +reg[63:0] temp;
10 +reg[31:0] HI, LO; // HI, LO register for multiplication and division.
11 +
12 +assign alubranch = aluout == 32'h00000000 ? 1'b1 : 1'b0;
13 +
14 +initial begin
15 + temp = 64'h0000000000000000;
16 + HI = 32'h00000000;
17 + LO = 32'h00000000;
18 +end
19 +
20 +always @(*) begin
21 +overflow = 0;
22 +case(aluctrl)
23 + 4'b0000: aluout = aluin1 & aluin2; // and
24 + 4'b0001: aluout = aluin1 | aluin2; // or
25 + 4'b0010: begin // add
26 + aluout = aluin1 + aluin2;
27 + overflow = aluin1[31]==aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection.
28 + end
29 + 4'b0110: begin // sub
30 + aluout = aluin1 - aluin2;
31 + overflow = aluin1[31]!=aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection.
32 + end
33 +
34 + 4'b0111: begin // slt
35 + aluout[31:1] = {31{1'b0}};
36 + aluout[0] = aluin1 < aluin2 ? 1'b1 : 1'b0;
37 + end
38 + 4'b1000: begin // mult
39 + temp = aluin1 * aluin2;
40 + HI = temp[63:32];
41 + LO = temp[31:0];
42 + end
43 + 4'b1001: begin // div
44 + HI = aluin1 % aluin2;
45 + LO = aluin1 / aluin2;
46 + end
47 + 4'b1010: aluout = HI; // mfhi
48 + 4'b1011: aluout = LO; // mflo
49 + 4'b1100: aluout = ~(aluin1 | aluin2); // nor
50 + 4'b1101: aluout = aluin1 ^ aluin2; // xor
51 + default: aluout = 32'b0;
52 +endcase
53 +end
54 +
55 +endmodule
1 +module ALUControl(funct, aluop, aluctrl);
2 +
3 +input[5:0] funct;
4 +input[1:0] aluop;
5 +output reg[3:0] aluctrl;
6 +
7 +always @(*) begin
8 + case(aluop)
9 + 2'b00: aluctrl = 4'b0010; // add
10 + 2'b01: aluctrl = 4'b0110; // sub
11 + 2'b10: case(funct) // R type instruction
12 + 6'b100000: aluctrl = 4'b0010; // add
13 + // 6'b100001: aluctrl = 4'b0010; // addu
14 + 6'b100010: aluctrl = 4'b0110; // sub
15 + // 6'b100011: aluctrl = 4'b0110; // subu
16 + 6'b100100: aluctrl = 4'b0000; // and
17 + 6'b100101: aluctrl = 4'b0001; // or
18 + 6'b100110: aluctrl = 4'b1101; // xor
19 + 6'b011000: aluctrl = 4'b1000; // mult
20 + // 6'b011001: aluctrl = 4'b1000; // multu
21 + 6'b011010: aluctrl = 4'b1001; // div
22 + // 6'b011011: aluctrl = 4'b1001; // divu
23 + 6'b101010: aluctrl = 4'b0111; // slt
24 + // 6'b101011: aluctrl = 4'b0111; // sltu
25 + 6'b010000: aluctrl = 4'b1010; // mfhi
26 + 6'b010010: aluctrl = 4'b1011; // mflo
27 +
28 + default: aluctrl = 4'b1111;
29 + endcase
30 + default: aluctrl = 4'b1111;
31 + endcase
32 +end
33 +
34 +endmodule
1 +module Adder(adderinput1, adderinput2, adderoutput);
2 +
3 +input[31:0] adderinput1, adderinput2;
4 +output[31:0] adderoutput;
5 +
6 +assign adderoutput = adderinput1 + adderinput2;
7 +
8 +endmodule
9 +
1 +module Control(opcode, regdst, regwrite, alusrc, aluop, memread, memwrite, memtoreg, branch, jump);
2 +
3 +input[5:0] opcode;
4 +output reg regdst, jump, branch, memread, memtoreg, memwrite, alusrc, regwrite;
5 +output reg[1:0] aluop;
6 +
7 +always @(*) begin
8 + case(opcode)
9 + 6'b000000: begin // R type instruction
10 + regdst = 1'b1;
11 + regwrite = 1'b1;
12 + alusrc = 1'b0;
13 + aluop = 2'b10;
14 + memread = 1'b0;
15 + memwrite = 1'b0;
16 + memtoreg = 1'b0;
17 + branch = 1'b0;
18 + jump = 1'b0;
19 + end
20 + 6'b001000: begin // addi
21 + regdst = 1'b0;
22 + regwrite = 1'b1;
23 + alusrc = 1'b1;
24 + aluop = 2'b00;
25 + memread = 1'b0;
26 + memwrite = 1'b0;
27 + memtoreg = 1'b0;
28 + branch = 1'b0;
29 + jump = 1'b0;
30 + end
31 + 6'b001001: begin // addiu
32 + regdst = 1'b0;
33 + regwrite = 1'b1;
34 + alusrc = 1'b1;
35 + aluop = 2'b00;
36 + memread = 1'b0;
37 + memwrite = 1'b0;
38 + memtoreg = 1'b0;
39 + branch = 1'b0;
40 + jump = 1'b0;
41 + end
42 + 6'b000100: begin // beq
43 + // regdst = 1'bx; // don't care
44 + regwrite = 1'b0;
45 + alusrc = 1'b0;
46 + aluop = 2'b01;
47 + memread = 1'b0;
48 + memwrite = 1'b0;
49 + // memtoreg = 1'bx;
50 + branch = 1'b1;
51 + jump = 1'b0;
52 + end
53 + 6'b000010: begin // jump
54 + // regdst = 1'bx;
55 + regwrite = 1'b0;
56 + // alusrc = 1'bx;
57 + // aluop = 2'bxx;
58 + memread = 1'b0;
59 + memwrite = 1'b0;
60 + // memtoreg = 1'bx;
61 + branch = 1'b0;
62 + jump = 1'b1;
63 + end
64 + 6'b100011: begin // lw
65 + regdst = 1'b0;
66 + regwrite = 1'b1;
67 + alusrc = 1'b1;
68 + aluop = 2'b00;
69 + memread = 1'b1;
70 + memwrite = 1'b0;
71 + memtoreg = 1'b1;
72 + branch = 1'b0;
73 + jump = 1'b0;
74 + end
75 + 6'b101011: begin // sw
76 + regdst = 1'b0;
77 + regwrite = 1'b0;
78 + alusrc = 1'b1;
79 + aluop = 2'b00;
80 + memread = 1'b0;
81 + memwrite = 1'b1;
82 + // memtoreg = 1'bx;
83 + branch = 1'b0;
84 + jump = 1'b0;
85 + end
86 + default: begin
87 + // regdst = 1'bx;
88 + regwrite = 1'b0;
89 + // alusrc = 1'bx;
90 + aluop = 2'b00;
91 + memread = 1'b0;
92 + memwrite = 1'b0;
93 + // memtoreg = 1'bx;
94 + // branch = 1'bx;
95 + // jump = 1'bx;
96 + end
97 + endcase
98 +end
99 +
100 +endmodule
1 +module DataMemory(address, writedata, memread, memwrite, readdata);
2 +
3 +input[31:0] address, writedata;
4 +input memread, memwrite;
5 +output[31:0] readdata;
6 +
7 +reg[31:0] mem[255:0];
8 +
9 +assign readdata = memread ? mem[address/4] : writedata;
10 +
11 +always @(*) begin
12 + if(memwrite==1'b1) begin
13 + mem[address/4] = writedata;
14 + end
15 +end
16 +
17 +endmodule
1 +module InstructionMemory(address, instruction);
2 +
3 +input[31:0] address;
4 +output reg[31:0] instruction;
5 +
6 +reg[31:0] instr_mem[127:0];
7 +
8 +initial begin
9 +instr_mem[0] = 32'd0;
10 +instr_mem[1] = 32'b00100100000010000000000011111111; // addi $0 $8 255
11 +instr_mem[2] = 32'b00000001000010000100100000100000; // add $8 $8 $9
12 +instr_mem[3] = 32'b00000001000000000101000000100000; // add $8 $0 $10
13 +instr_mem[4] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
14 +instr_mem[5] = 32'b00000001000010010000000000011000; // mult $8 $9
15 +instr_mem[6] = 32'd0;
16 +instr_mem[7] = 32'b00000000000000000110000000010000; // mfhi $12
17 +instr_mem[8] = 32'b00000000000000000110100000010010; // mflo $13
18 +instr_mem[9] = 32'b10101100000011010000000000111100; // sw $0 $13 60
19 +instr_mem[10] = 32'd0;
20 +instr_mem[11] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
21 +instr_mem[12] = 32'b10001100000000010000000000111100; // lw $0 $1 60
22 +instr_mem[13] = 32'd0;
23 +
24 +end
25 +
26 +always @ (*) begin
27 + instruction = instr_mem[address/4];
28 +end
29 +
30 +endmodule
1 +module InstructionMemory(address, instruction);
2 +
3 +input[31:0] address;
4 +output reg[31:0] instruction;
5 +
6 +reg[31:0] instr_mem[127:0];
7 +
8 +initial begin
9 +instr_mem[0] = 32'd0;
10 +instr_mem[1] = 32'b00100100000010000000000011111111; // addi $0 $8 255
11 +instr_mem[2] = 32'b00000001000010000100100000100000; // add $8 $8 $9
12 +instr_mem[3] = 32'b00000001000000000101000000100000; // add $8 $0 $10
13 +instr_mem[4] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
14 +instr_mem[5] = 32'b00000001000010010000000000011000; // mult $8 $9
15 +instr_mem[6] = 32'd0;
16 +instr_mem[7] = 32'b00000000000000000110000000010000; // mfhi $12
17 +instr_mem[8] = 32'b00000000000000000110100000010010; // mflo $13
18 +instr_mem[9] = 32'b10101100000011010000000000111100; // sw $0 $13 15
19 +instr_mem[10] = 32'd0;
20 +instr_mem[11] = 32'b00010001000010110000000000000001; // beq $8 $11 +1
21 +instr_mem[12] = 32'b10001100000000010000000000111100; // lw $0 $1 60
22 +instr_mem[13] = 32'd0;
23 +
24 +end
25 +
26 +always @ (*) begin
27 + instruction = instr_mem[address/4];
28 +end
29 +
30 +endmodule
1 +D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
2 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
3 +-- Compiling module testbench
4 +
5 +Top level modules:
6 + testbench
7 +
8 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
9 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
10 +-- Compiling module Adder
11 +
12 +Top level modules:
13 + Adder
14 +
15 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
16 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
17 +-- Compiling module SignExtend
18 +
19 +Top level modules:
20 + SignExtend
21 +
22 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
23 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
24 +-- Compiling module ALUControl
25 +
26 +Top level modules:
27 + ALUControl
28 +
29 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
30 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
31 +-- Compiling module ShiftLeft2
32 +
33 +Top level modules:
34 + ShiftLeft2
35 +
36 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
37 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
38 +-- Compiling module test
39 +
40 +Top level modules:
41 + test
42 +
43 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
44 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
45 +-- Compiling module Control
46 +
47 +Top level modules:
48 + Control
49 +
50 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
51 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
52 +-- Compiling module ALU
53 +
54 +Top level modules:
55 + ALU
56 +
57 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
58 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
59 +-- Compiling module Mux32bit
60 +-- Compiling module Mux5bit
61 +
62 +Top level modules:
63 + Mux32bit
64 + Mux5bit
65 +
66 +} {} {}} {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v} {1 {vlog -work work -stats=none {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v}
67 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
68 +-- Compiling module DataMemory
69 +
70 +Top level modules:
71 + DataMemory
72 +
73 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
74 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
75 +-- Compiling module Clock
76 +
77 +Top level modules:
78 + Clock
79 +
80 +} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
81 +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015
82 +-- Compiling module Register
83 +
84 +Top level modules:
85 + Register
86 +
87 +} {} {}}
1 +; vsim modelsim.ini file, version 10.4
2 +[Version]
3 +INIVersion = "10.4a"
4 +
5 +; Copyright 1991-2015 Mentor Graphics Corporation
6 +;
7 +; All Rights Reserved.
8 +;
9 +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF
10 +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
11 +;
12 +
13 +[Library]
14 +std = $MODEL_TECH/../std
15 +ieee = $MODEL_TECH/../ieee
16 +vital2000 = $MODEL_TECH/../vital2000
17 +;
18 +; VITAL concerns:
19 +;
20 +; The library ieee contains (among other packages) the packages of the
21 +; VITAL 2000 standard. When a design uses VITAL 2000 exclusively, it should use
22 +; the physical library ieee (recommended), or use the physical library
23 +; vital2000, but not both. The design can use logical library ieee and/or
24 +; vital2000 as long as each of these maps to the same physical library, either
25 +; ieee or vital2000.
26 +;
27 +; A design using the 1995 version of the VITAL packages, whether or not
28 +; it also uses the 2000 version of the VITAL packages, must have logical library
29 +; name ieee mapped to physical library vital1995. (A design cannot use library
30 +; vital1995 directly because some packages in this library use logical name ieee
31 +; when referring to the other packages in the library.) The design source
32 +; should use logical name ieee when referring to any packages there except the
33 +; VITAL 2000 packages. Any VITAL 2000 present in the design must use logical
34 +; name vital2000 (mapped to physical library vital2000) to refer to those
35 +; packages.
36 +; ieee = $MODEL_TECH/../vital1995
37 +;
38 +; For compatiblity with previous releases, logical library name vital2000 maps
39 +; to library vital2000 (a different library than library ieee, containing the
40 +; same packages).
41 +; A design should not reference VITAL from both the ieee library and the
42 +; vital2000 library because the vital packages are effectively different.
43 +; A design that references both the ieee and vital2000 libraries must have
44 +; both logical names ieee and vital2000 mapped to the same library, either of
45 +; these:
46 +; $MODEL_TECH/../ieee
47 +; $MODEL_TECH/../vital2000
48 +;
49 +verilog = $MODEL_TECH/../verilog
50 +std_developerskit = $MODEL_TECH/../std_developerskit
51 +synopsys = $MODEL_TECH/../synopsys
52 +modelsim_lib = $MODEL_TECH/../modelsim_lib
53 +sv_std = $MODEL_TECH/../sv_std
54 +mtiAvm = $MODEL_TECH/../avm
55 +mtiRnm = $MODEL_TECH/../rnm
56 +mtiOvm = $MODEL_TECH/../ovm-2.1.2
57 +mtiUvm = $MODEL_TECH/../uvm-1.1d
58 +mtiUPF = $MODEL_TECH/../upf_lib
59 +mtiPA = $MODEL_TECH/../pa_lib
60 +floatfixlib = $MODEL_TECH/../floatfixlib
61 +mc2_lib = $MODEL_TECH/../mc2_lib
62 +osvvm = $MODEL_TECH/../osvvm
63 +
64 +; added mapping for ADMS
65 +mgc_ams = $MODEL_TECH/../mgc_ams
66 +ieee_env = $MODEL_TECH/../ieee_env
67 +
68 +;vhdl_psl_checkers = $MODEL_TECH/../vhdl_psl_checkers // Source files only for this release
69 +;verilog_psl_checkers = $MODEL_TECH/../verilog_psl_checkers // Source files only for this release
70 +;mvc_lib = $MODEL_TECH/../mvc_lib
71 +infact = $MODEL_TECH/../infact
72 +
73 +
74 +vhdlopt_lib = $MODEL_TECH/../vhdlopt_lib
75 +work = work
76 +[DefineOptionset]
77 +; Define optionset entries for the various compilers, vmake, and vsim.
78 +; These option sets can be used with the "-optionset <optionsetname>" syntax.
79 +; i.e.
80 +; vlog -optionset COMPILEDEBUG top.sv
81 +; vsim -optionset UVMDEBUG my_top
82 +;
83 +; Following are some useful examples.
84 +
85 +; define a vsim optionset for uvm debugging
86 +UVMDEBUG = -uvmcontrol=all -msgmode both -displaymsgmode both -classdebug -onfinish stop
87 +
88 +; define a vopt optionset for debugging
89 +VOPTDEBUG = +acc -debugdb
90 +
91 +
92 +[vcom]
93 +; VHDL93 variable selects language version as the default.
94 +; Default is VHDL-2002.
95 +; Value of 0 or 1987 for VHDL-1987.
96 +; Value of 1 or 1993 for VHDL-1993.
97 +; Default or value of 2 or 2002 for VHDL-2002.
98 +; Value of 3 or 2008 for VHDL-2008
99 +; Value of 4 or ams99 for VHDL-AMS-1999
100 +; Value of 5 or ams07 for VHDL-AMS-2007
101 +VHDL93 = 2002
102 +
103 +; Ignore VHDL-2008 declaration of REAL_VECTOR in package STANDARD. Default is off.
104 +; ignoreStandardRealVector = 1
105 +
106 +; Show source line containing error. Default is off.
107 +; Show_source = 1
108 +
109 +; Turn off unbound-component warnings. Default is on.
110 +; Show_Warning1 = 0
111 +
112 +; Turn off process-without-a-wait-statement warnings. Default is on.
113 +; Show_Warning2 = 0
114 +
115 +; Turn off null-range warnings. Default is on.
116 +; Show_Warning3 = 0
117 +
118 +; Turn off no-space-in-time-literal warnings. Default is on.
119 +; Show_Warning4 = 0
120 +
121 +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on.
122 +; Show_Warning5 = 0
123 +
124 +; Turn off optimization for IEEE std_logic_1164 package. Default is on.
125 +; Optimize_1164 = 0
126 +
127 +; Enable compiler statistics. Specify one or more arguments:
128 +; [all,none,time,cmd,msg,perf,verbose,list]
129 +; Add '-' to disable specific statistics. Default is [time,cmd,msg].
130 +; Stats = time,cmd,msg
131 +
132 +; Turn on resolving of ambiguous function overloading in favor of the
133 +; "explicit" function declaration (not the one automatically created by
134 +; the compiler for each type declaration). Default is off.
135 +; The .ini file has Explicit enabled so that std_logic_signed/unsigned
136 +; will match the behavior of synthesis tools.
137 +Explicit = 1
138 +
139 +; Turn off acceleration of the VITAL packages. Default is to accelerate.
140 +; NoVital = 1
141 +
142 +; Turn off VITAL compliance checking. Default is checking on.
143 +; NoVitalCheck = 1
144 +
145 +; Ignore VITAL compliance checking errors. Default is to not ignore.
146 +; IgnoreVitalErrors = 1
147 +
148 +; Turn off VITAL compliance checking warnings. Default is to show warnings.
149 +; Show_VitalChecksWarnings = 0
150 +
151 +; Turn off PSL assertion warning messages. Default is to show warnings.
152 +; Show_PslChecksWarnings = 0
153 +
154 +; Enable parsing of embedded PSL assertions. Default is enabled.
155 +; EmbeddedPsl = 0
156 +
157 +; Keep silent about case statement static warnings.
158 +; Default is to give a warning.
159 +; NoCaseStaticError = 1
160 +
161 +; Keep silent about warnings caused by aggregates that are not locally static.
162 +; Default is to give a warning.
163 +; NoOthersStaticError = 1
164 +
165 +; Treat as errors:
166 +; case statement static warnings
167 +; warnings caused by aggregates that are not locally static
168 +; Overrides NoCaseStaticError, NoOthersStaticError settings.
169 +; PedanticErrors = 1
170 +
171 +; Turn off inclusion of debugging info within design units.
172 +; Default is to include debugging info.
173 +; NoDebug = 1
174 +
175 +; Turn off "Loading..." messages. Default is messages on.
176 +; Quiet = 1
177 +
178 +; Turn on some limited synthesis rule compliance checking. Checks only:
179 +; -- signals used (read) by a process must be in the sensitivity list
180 +; CheckSynthesis = 1
181 +
182 +; Activate optimizations on expressions that do not involve signals,
183 +; waits, or function/procedure/task invocations. Default is off.
184 +; ScalarOpts = 1
185 +
186 +; Turns on lint-style checking.
187 +; Show_Lint = 1
188 +
189 +; Require the user to specify a configuration for all bindings,
190 +; and do not generate a compile time default binding for the
191 +; component. This will result in an elaboration error of
192 +; 'component not bound' if the user fails to do so. Avoids the rare
193 +; issue of a false dependency upon the unused default binding.
194 +; RequireConfigForAllDefaultBinding = 1
195 +
196 +; Perform default binding at compile time.
197 +; Default is to do default binding at load time.
198 +; BindAtCompile = 1;
199 +
200 +; Inhibit range checking on subscripts of arrays. Range checking on
201 +; scalars defined with subtypes is inhibited by default.
202 +; NoIndexCheck = 1
203 +
204 +; Inhibit range checks on all (implicit and explicit) assignments to
205 +; scalar objects defined with subtypes.
206 +; NoRangeCheck = 1
207 +
208 +; Set the prefix to be honored for synthesis/coverage pragma recognition.
209 +; Default is "".
210 +; AddPragmaPrefix = ""
211 +
212 +; Ignore synthesis and coverage pragmas with this prefix.
213 +; Default is "".
214 +; IgnorePragmaPrefix = ""
215 +
216 +; Turn on code coverage in VHDL design units. Default is off.
217 +; Coverage = sbceft
218 +
219 +; Turn off code coverage in VHDL subprograms. Default is on.
220 +; CoverSub = 0
221 +
222 +; Automatically exclude VHDL case statement OTHERS choice branches.
223 +; This includes OTHERS choices in selected signal assigment statements.
224 +; Default is to not exclude.
225 +; CoverExcludeDefault = 1
226 +
227 +; Control compiler and VOPT optimizations that are allowed when
228 +; code coverage is on. Refer to the comment for this in the [vlog] area.
229 +; CoverOpt = 3
230 +
231 +; Turn on or off clkOpt optimization for code coverage. Default is on.
232 +; CoverClkOpt = 1
233 +
234 +; Turn on or off clkOpt optimization builtins for code coverage. Default is on.
235 +; CoverClkOptBuiltins = 0
236 +
237 +; Inform code coverage optimizations to respect VHDL 'H' and 'L'
238 +; values on signals in conditions and expressions, and to not automatically
239 +; convert them to '1' and '0'. Default is to not convert.
240 +; CoverRespectHandL = 0
241 +
242 +; Increase or decrease the maximum number of rows allowed in a UDP table
243 +; implementing a VHDL condition coverage or expression coverage expression.
244 +; More rows leads to a longer compile time, but more expressions covered.
245 +; CoverMaxUDPRows = 192
246 +
247 +; Increase or decrease the maximum number of input patterns that are present
248 +; in FEC table. This leads to a longer compile time with more expressions
249 +; covered with FEC metric.
250 +; CoverMaxFECRows = 192
251 +
252 +; Increase or decrease the limit on the size of expressions and conditions
253 +; considered for expression and condition coverages. Higher FecUdpEffort leads
254 +; to higher compile, optimize and simulation time, but more expressions and
255 +; conditions are considered for coverage in the design. FecUdpEffort can
256 +; be set to a number ranging from 1 (low) to 3 (high), defined as:
257 +; 1 - (low) Only small expressions and conditions considered for coverage.
258 +; 2 - (medium) Bigger expressions and conditions considered for coverage.
259 +; 3 - (high) Very large expressions and conditions considered for coverage.
260 +; The default setting is 1 (low).
261 +; FecUdpEffort = 1
262 +
263 +; Enable or disable Focused Expression Coverage analysis for conditions and
264 +; expressions. Focused Expression Coverage data is provided by default when
265 +; expression and/or condition coverage is active.
266 +; CoverFEC = 0
267 +
268 +; Enable or disable UDP Coverage analysis for conditions and expressions.
269 +; UDP Coverage data is disabled by default when expression and/or condition
270 +; coverage is active.
271 +; CoverUDP = 1
272 +
273 +; Enable or disable Rapid Expression Coverage mode for conditions and expressions.
274 +; Disabling this would convert non-masking conditions in FEC tables to matching
275 +; input patterns.
276 +; CoverREC = 1
277 +
278 +; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions
279 +; for expression/condition coverage.
280 +; NOTE: Enabling this may have a negative impact on simulation performance.
281 +; CoverExpandReductionPrefix = 0
282 +
283 +; Enable or disable short circuit evaluation of conditions and expressions when
284 +; condition or expression coverage is active. Short circuit evaluation is enabled
285 +; by default.
286 +; CoverShortCircuit = 0
287 +
288 +; Enable code coverage reporting of code that has been optimized away.
289 +; The default is not to report.
290 +; CoverReportCancelled = 1
291 +
292 +; Enable deglitching of code coverage in combinatorial, non-clocked, processes.
293 +; Default is no deglitching.
294 +; CoverDeglitchOn = 1
295 +
296 +; Control the code coverage deglitching period. A period of 0, eliminates delta
297 +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a
298 +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps".
299 +; CoverDeglitchPeriod = 0
300 +
301 +; Use this directory for compiler temporary files instead of "work/_temp"
302 +; CompilerTempDir = /tmp
303 +
304 +; Set this to cause the compilers to force data to be committed to disk
305 +; when the files are closed.
306 +; SyncCompilerFiles = 1
307 +
308 +; Add VHDL-AMS declarations to package STANDARD
309 +; Default is not to add
310 +; AmsStandard = 1
311 +
312 +; Range and length checking will be performed on array indices and discrete
313 +; ranges, and when violations are found within subprograms, errors will be
314 +; reported. Default is to issue warnings for violations, because subprograms
315 +; may not be invoked.
316 +; NoDeferSubpgmCheck = 0
317 +
318 +; Turn ON detection of FSMs having single bit current state variable.
319 +; FsmSingle = 1
320 +
321 +; Turn off reset state transitions in FSM.
322 +; FsmResetTrans = 0
323 +
324 +; Turn ON detection of FSM Implicit Transitions.
325 +; FsmImplicitTrans = 1
326 +
327 +; Controls whether or not to show immediate assertions with constant expressions
328 +; in GUI/report/UCDB etc. By default, immediate assertions with constant
329 +; expressions are shown in GUI/report/UCDB etc. This does not affect
330 +; evaluation of immediate assertions.
331 +; ShowConstantImmediateAsserts = 0
332 +
333 +; Controls how VHDL basic identifiers are stored with the design unit.
334 +; Does not make the language case-sensitive, affects only how declarations
335 +; declared with basic identifiers have their names stored and printed
336 +; (in the GUI, examine, etc.).
337 +; Default is to preserve the case as originally depicted in the VHDL source.
338 +; Value of 0 indicates to change all basic identifiers to lower case.
339 +; PreserveCase = 0
340 +
341 +; For Configuration Declarations, controls the effect that USE clauses have
342 +; on visibility inside the configuration items being configured. If 1
343 +; (the default), then use pre-10.0 behavior. If 0, then for stricter LRM-compliance,
344 +; extend the visibility of objects made visible through USE clauses into nested
345 +; component configurations.
346 +; OldVHDLConfigurationVisibility = 0
347 +
348 +; Allows VHDL configuration declarations to be in a different library from
349 +; the corresponding configured entity. Default is to not allow this for
350 +; stricter LRM-compliance.
351 +; SeparateConfigLibrary = 1;
352 +
353 +; Determine how mode OUT subprogram parameters of type array and record are treated.
354 +; If 0 (the default), then only VHDL 2008 will do this initialization.
355 +; If 1, always initialize the mode OUT parameter to its default value.
356 +; If 2, do not initialize the mode OUT out parameter.
357 +; Note that prior to release 10.1, all language versions did not initialize mode
358 +; OUT array and record type parameters, unless overridden here via this mechanism.
359 +; In release 10.1 and later, only files compiled with VHDL 2008 will cause this
360 +; initialization, unless overridden here.
361 +; InitOutCompositeParam = 0
362 +
363 +; Generate symbols debugging database in only some special cases to save on
364 +; the number of files in the library. For other design-units, this database is
365 +; generated on-demand in vsim.
366 +; Default is to to generate debugging database for all design-units.
367 +; SmartDbgSym = 1
368 +
369 +; Enable or disable automatic creation of missing libraries.
370 +; Default is 1 (enabled)
371 +; CreateLib = 1
372 +
373 +[vlog]
374 +; Turn off inclusion of debugging info within design units.
375 +; Default is to include debugging info.
376 +; NoDebug = 1
377 +
378 +; Turn on `protect compiler directive processing.
379 +; Default is to ignore `protect directives.
380 +; Protect = 1
381 +
382 +; Turn off "Loading..." messages. Default is messages on.
383 +; Quiet = 1
384 +
385 +; Turn on Verilog hazard checking (order-dependent accessing of global vars).
386 +; Default is off.
387 +; Hazard = 1
388 +
389 +; Turn on converting regular Verilog identifiers to uppercase. Allows case
390 +; insensitivity for module names. Default is no conversion.
391 +; UpCase = 1
392 +
393 +; Activate optimizations on expressions that do not involve signals,
394 +; waits, or function/procedure/task invocations. Default is off.
395 +; ScalarOpts = 1
396 +
397 +; Turns on lint-style checking.
398 +; Show_Lint = 1
399 +
400 +; Show source line containing error. Default is off.
401 +; Show_source = 1
402 +
403 +; Turn on bad option warning. Default is off.
404 +; Show_BadOptionWarning = 1
405 +
406 +; Revert back to IEEE 1364-1995 syntax, default is 0 (off).
407 +; vlog95compat = 1
408 +
409 +; Turn off PSL warning messages. Default is to show warnings.
410 +; Show_PslChecksWarnings = 0
411 +
412 +; Enable parsing of embedded PSL assertions. Default is enabled.
413 +; EmbeddedPsl = 0
414 +
415 +; Enable compiler statistics. Specify one or more arguments:
416 +; [all,none,time,cmd,msg,perf,verbose,list,kb]
417 +; Add '-' to disable specific statistics. Default is [time,cmd,msg].
418 +; Stats = time,cmd,msg
419 +
420 +; Set the threshold for automatically identifying sparse Verilog memories.
421 +; A memory with depth equal to or more than the sparse memory threshold gets
422 +; marked as sparse automatically, unless specified otherwise in source code
423 +; or by +nosparse commandline option of vlog or vopt.
424 +; The default is 1M. (i.e. memories with depth equal
425 +; to or greater than 1M are marked as sparse)
426 +; SparseMemThreshold = 1048576
427 +
428 +; Set the prefix to be honored for synthesis and coverage pragma recognition.
429 +; Default is "".
430 +; AddPragmaPrefix = ""
431 +
432 +; Ignore synthesis and coverage pragmas with this prefix.
433 +; Default is "".
434 +; IgnorePragmaPrefix = ""
435 +
436 +; Set the option to treat all files specified in a vlog invocation as a
437 +; single compilation unit. The default value is set to 0 which will treat
438 +; each file as a separate compilation unit as specified in the P1800 draft standard.
439 +; MultiFileCompilationUnit = 1
440 +
441 +; Turn on code coverage in Verilog design units. Default is off.
442 +; Coverage = sbceft
443 +
444 +; Automatically exclude Verilog case statement default branches.
445 +; Default is to not automatically exclude defaults.
446 +; CoverExcludeDefault = 1
447 +
448 +; Increase or decrease the maximum number of rows allowed in a UDP table
449 +; implementing a VHDL condition coverage or expression coverage expression.
450 +; More rows leads to a longer compile time, but more expressions covered.
451 +; CoverMaxUDPRows = 192
452 +
453 +; Increase or decrease the maximum number of input patterns that are present
454 +; in FEC table. This leads to a longer compile time with more expressions
455 +; covered with FEC metric.
456 +; CoverMaxFECRows = 192
457 +
458 +; Increase or decrease the limit on the size of expressions and conditions
459 +; considered for expression and condition coverages. Higher FecUdpEffort leads
460 +; to higher compile, optimize and simulation time, but more expressions and
461 +; conditions are considered for coverage in the design. FecUdpEffort can
462 +; be set to a number ranging from 1 (low) to 3 (high), defined as:
463 +; 1 - (low) Only small expressions and conditions considered for coverage.
464 +; 2 - (medium) Bigger expressions and conditions considered for coverage.
465 +; 3 - (high) Very large expressions and conditions considered for coverage.
466 +; The default setting is 1 (low).
467 +; FecUdpEffort = 1
468 +
469 +; Enable or disable Focused Expression Coverage analysis for conditions and
470 +; expressions. Focused Expression Coverage data is provided by default when
471 +; expression and/or condition coverage is active.
472 +; CoverFEC = 0
473 +
474 +; Enable or disable UDP Coverage analysis for conditions and expressions.
475 +; UDP Coverage data is disabled by default when expression and/or condition
476 +; coverage is active.
477 +; CoverUDP = 1
478 +
479 +; Enable or disable Rapid Expression Coverage mode for conditions and expressions.
480 +; Disabling this would convert non-masking conditions in FEC tables to matching
481 +; input patterns.
482 +; CoverREC = 1
483 +
484 +; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions
485 +; for expression/condition coverage.
486 +; NOTE: Enabling this may have a negative impact on simulation performance.
487 +; CoverExpandReductionPrefix = 0
488 +
489 +; Enable or disable short circuit evaluation of conditions and expressions when
490 +; condition or expression coverage is active. Short circuit evaluation is enabled
491 +; by default.
492 +; CoverShortCircuit = 0
493 +
494 +; Enable deglitching of code coverage in combinatorial, non-clocked, processes.
495 +; Default is no deglitching.
496 +; CoverDeglitchOn = 1
497 +
498 +; Control the code coverage deglitching period. A period of 0, eliminates delta
499 +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a
500 +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps".
501 +; CoverDeglitchPeriod = 0
502 +
503 +; Turn on code coverage in VLOG `celldefine modules, modules containing
504 +; specify blocks, and modules included using vlog -v and -y. Default is off.
505 +; CoverCells = 1
506 +
507 +; Enable code coverage reporting of code that has been optimized away.
508 +; The default is not to report.
509 +; CoverReportCancelled = 1
510 +
511 +; Control compiler and VOPT optimizations that are allowed when
512 +; code coverage is on. This is a number from 0 to 5, with the following
513 +; meanings (the default is 3):
514 +; 5 -- All allowable optimizations are on.
515 +; 4 -- Turn off removing unreferenced code.
516 +; 3 -- Turn off process, always block and if statement merging.
517 +; 2 -- Turn off expression optimization, converting primitives
518 +; to continuous assignments, VHDL subprogram inlining.
519 +; and VHDL clkOpt (converting FF's to builtins).
520 +; 1 -- Turn off continuous assignment optimizations and clock suppression.
521 +; 0 -- Turn off Verilog module inlining and VHDL arch inlining.
522 +; HOWEVER, if fsm coverage is turned on, optimizations will be forced to
523 +; level 3, with also turning off converting primitives to continuous assigns.
524 +; CoverOpt = 3
525 +
526 +; Specify the override for the default value of "cross_num_print_missing"
527 +; option for the Cross in Covergroups. If not specified then LRM default
528 +; value of 0 (zero) is used. This is a compile time option.
529 +; SVCrossNumPrintMissingDefault = 0
530 +
531 +; Setting following to 1 would cause creation of variables which
532 +; would represent the value of Coverpoint expressions. This is used
533 +; in conjunction with "SVCoverpointExprVariablePrefix" option
534 +; in the modelsim.ini
535 +; EnableSVCoverpointExprVariable = 0
536 +
537 +; Specify the override for the prefix used in forming the variable names
538 +; which represent the Coverpoint expressions. This is used in conjunction with
539 +; "EnableSVCoverpointExprVariable" option of the modelsim.ini
540 +; The default prefix is "expr".
541 +; The variable name is
542 +; variable name => <prefix>_<coverpoint name>
543 +; SVCoverpointExprVariablePrefix = expr
544 +
545 +; Override for the default value of the SystemVerilog covergroup,
546 +; coverpoint, and cross option.goal (defined to be 100 in the LRM).
547 +; NOTE: It does not override specific assignments in SystemVerilog
548 +; source code. NOTE: The modelsim.ini variable "SVCovergroupGoal"
549 +; in the [vsim] section can override this value.
550 +; SVCovergroupGoalDefault = 100
551 +
552 +; Override for the default value of the SystemVerilog covergroup,
553 +; coverpoint, and cross type_option.goal (defined to be 100 in the LRM)
554 +; NOTE: It does not override specific assignments in SystemVerilog
555 +; source code. NOTE: The modelsim.ini variable "SVCovergroupTypeGoal"
556 +; in the [vsim] section can override this value.
557 +; SVCovergroupTypeGoalDefault = 100
558 +
559 +; Specify the override for the default value of "strobe" option for the
560 +; Covergroup Type. This is a compile time option which forces "strobe" to
561 +; a user specified default value and supersedes SystemVerilog specified
562 +; default value of '0'(zero). NOTE: This can be overriden by a runtime
563 +; modelsim.ini variable "SVCovergroupStrobe" in the [vsim] section.
564 +; SVCovergroupStrobeDefault = 0
565 +
566 +; Specify the override for the default value of "per_instance" option for the
567 +; Covergroup variables. This is a compile time option which forces "per_instance"
568 +; to a user specified default value and supersedes SystemVerilog specified
569 +; default value of '0'(zero).
570 +; SVCovergroupPerInstanceDefault = 0
571 +
572 +; Specify the override for the default value of "get_inst_coverage" option for the
573 +; Covergroup variables. This is a compile time option which forces
574 +; "get_inst_coverage" to a user specified default value and supersedes
575 +; SystemVerilog specified default value of '0'(zero).
576 +; SVCovergroupGetInstCoverageDefault = 0
577 +
578 +;
579 +; A space separated list of resource libraries that contain precompiled
580 +; packages. The behavior is identical to using the "-L" switch.
581 +;
582 +; LibrarySearchPath = <path/lib> [<path/lib> ...]
583 +LibrarySearchPath = mtiAvm mtiRnm mtiOvm mtiUvm mtiUPF infact
584 +
585 +; The behavior is identical to the "-mixedansiports" switch. Default is off.
586 +; MixedAnsiPorts = 1
587 +
588 +; Enable SystemVerilog 3.1a $typeof() function. Default is off.
589 +; EnableTypeOf = 1
590 +
591 +; Only allow lower case pragmas. Default is disabled.
592 +; AcceptLowerCasePragmaOnly = 1
593 +
594 +; Set the maximum depth permitted for a recursive include file nesting.
595 +; IncludeRecursionDepthMax = 5
596 +
597 +; Turn ON detection of FSMs having single bit current state variable.
598 +; FsmSingle = 1
599 +
600 +; Turn off reset state transitions in FSM.
601 +; FsmResetTrans = 0
602 +
603 +; Turn off detections of FSMs having x-assignment.
604 +; FsmXAssign = 0
605 +
606 +; Turn ON detection of FSM Implicit Transitions.
607 +; FsmImplicitTrans = 1
608 +
609 +; List of file suffixes which will be read as SystemVerilog. White space
610 +; in extensions can be specified with a back-slash: "\ ". Back-slashes
611 +; can be specified with two consecutive back-slashes: "\\";
612 +; SvFileSuffixes = sv svp svh
613 +
614 +; This setting is the same as the vlog -sv command line switch.
615 +; Enables SystemVerilog features and keywords when true (1).
616 +; When false (0), the rules of IEEE Std 1364-2001 are followed and
617 +; SystemVerilog keywords are ignored.
618 +; Svlog = 0
619 +
620 +; Prints attribute placed upon SV packages during package import
621 +; when true (1). The attribute will be ignored when this
622 +; entry is false (0). The attribute name is "package_load_message".
623 +; The value of this attribute is a string literal.
624 +; Default is true (1).
625 +; PrintSVPackageLoadingAttribute = 1
626 +
627 +; Do not show immediate assertions with constant expressions in
628 +; GUI/reports/UCDB etc. By default immediate assertions with constant
629 +; expressions are shown in GUI/reports/UCDB etc. This does not affect
630 +; evaluation of immediate assertions.
631 +; ShowConstantImmediateAsserts = 0
632 +
633 +; Controls if untyped parameters that are initialized with values greater
634 +; than 2147483647 are mapped to generics of type INTEGER or ignored.
635 +; If mapped to VHDL Integers, values greater than 2147483647
636 +; are mapped to negative values.
637 +; Default is to map these parameter to generic of type INTEGER
638 +; ForceUnsignedToVHDLInteger = 1
639 +
640 +; Enable AMS wreal (wired real) extensions. Default is 0.
641 +; WrealType = 1
642 +
643 +; Controls SystemVerilog Language Extensions. These options enable
644 +; some non-LRM compliant behavior. Valid extensions are:
645 +; "acum", "atpi", "catx", "daoa", "feci", "fin0", "idcl",
646 +; "iddp", "pae", "sccts", "spsl", "stop0", "udm0", and "uslt".
647 +; SvExtensions = uslt,spsl,sccts
648 +
649 +; Generate symbols debugging database in only some special cases to save on
650 +; the number of files in the library. For other design-units, this database is
651 +; generated on-demand in vsim.
652 +; Default is to to generate debugging database for all design-units.
653 +; SmartDbgSym = 1
654 +
655 +; Controls how $unit library entries are named. Valid options are:
656 +; "file" (generate name based on the first file on the command line)
657 +; "du" (generate name based on first design unit following an item
658 +; found in $unit scope)
659 +; CUAutoName = file
660 +
661 +; Enable or disable automatic creation of missing libraries.
662 +; Default is 1 (enabled)
663 +; CreateLib = 1
664 +
665 +[sccom]
666 +; Enable use of SCV include files and library. Default is off.
667 +; UseScv = 1
668 +
669 +; Add C++ compiler options to the sccom command line by using this variable.
670 +; CppOptions = -g
671 +
672 +; Use custom C++ compiler located at this path rather than the default path.
673 +; The path should point directly at a compiler executable.
674 +; CppPath = /usr/bin/g++
675 +
676 +; Specify the compiler version from the list of support GNU compilers.
677 +; examples 4.3.3, 4.5.0
678 +; CppInstall = 4.5.0
679 +
680 +; Enable verbose messages from sccom. Default is off.
681 +; SccomVerbose = 1
682 +
683 +; sccom logfile. Default is no logfile.
684 +; SccomLogfile = sccom.log
685 +
686 +; Enable use of SC_MS include files and library. Default is off.
687 +; UseScMs = 1
688 +
689 +; Use SystemC-2.2 instead of the default SystemC-2.3. Default is off.
690 +; Sc22Mode = 1
691 +
692 +; Enable compiler statistics. Specify one or more arguments:
693 +; [all,none,time,cmd,msg,perf,verbose,list,kb]
694 +; Add '-' to disable specific statistics. Default is [time,cmd,msg].
695 +; Stats = time,cmd,msg
696 +
697 +; Enable or disable automatic creation of missing libraries.
698 +; Default is 1 (enabled)
699 +; CreateLib = 1
700 +
701 +[vopt]
702 +; Turn on code coverage in vopt. Default is off.
703 +; Coverage = sbceft
704 +
705 +; Control compiler optimizations that are allowed when
706 +; code coverage is on. Refer to the comment for this in the [vlog] area.
707 +; CoverOpt = 3
708 +
709 +; Increase or decrease the maximum number of rows allowed in a UDP table
710 +; implementing a VHDL condition coverage or expression coverage expression.
711 +; More rows leads to a longer compile time, but more expressions covered.
712 +; CoverMaxUDPRows = 192
713 +
714 +; Increase or decrease the maximum number of input patterns that are present
715 +; in FEC table. This leads to a longer compile time with more expressions
716 +; covered with FEC metric.
717 +; CoverMaxFECRows = 192
718 +
719 +; Increase or decrease the limit on the size of expressions and conditions
720 +; considered for expression and condition coverages. Higher FecUdpEffort leads
721 +; to higher compile, optimize and simulation time, but more expressions and
722 +; conditions are considered for coverage in the design. FecUdpEffort can
723 +; be set to a number ranging from 1 (low) to 3 (high), defined as:
724 +; 1 - (low) Only small expressions and conditions considered for coverage.
725 +; 2 - (medium) Bigger expressions and conditions considered for coverage.
726 +; 3 - (high) Very large expressions and conditions considered for coverage.
727 +; The default setting is 1 (low).
728 +; FecUdpEffort = 1
729 +
730 +; Enable code coverage reporting of code that has been optimized away.
731 +; The default is not to report.
732 +; CoverReportCancelled = 1
733 +
734 +; Enable deglitching of code coverage in combinatorial, non-clocked, processes.
735 +; Default is no deglitching.
736 +; CoverDeglitchOn = 1
737 +
738 +; Enable compiler statistics. Specify one or more arguments:
739 +; [all,none,time,cmd,msg,perf,verbose,list,kb]
740 +; Add '-' to disable specific statistics. Default is [time,cmd,msg].
741 +; Stats = time,cmd,msg
742 +
743 +; Control the code coverage deglitching period. A period of 0, eliminates delta
744 +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a
745 +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps".
746 +; CoverDeglitchPeriod = 0
747 +
748 +; Do not show immediate assertions with constant expressions in
749 +; GUI/reports/UCDB etc. By default immediate assertions with constant
750 +; expressions are shown in GUI/reports/UCDB etc. This does not affect
751 +; evaluation of immediate assertions.
752 +; ShowConstantImmediateAsserts = 0
753 +
754 +; Set the maximum number of iterations permitted for a generate loop.
755 +; Restricting this permits the implementation to recognize infinite
756 +; generate loops.
757 +; GenerateLoopIterationMax = 100000
758 +
759 +; Set the maximum depth permitted for a recursive generate instantiation.
760 +; Restricting this permits the implementation to recognize infinite
761 +; recursions.
762 +; GenerateRecursionDepthMax = 200
763 +
764 +; Set the number of processes created during the code generation phase.
765 +; By default a heuristic is used to set this value. This may be set to 0
766 +; to disable this feature completely.
767 +; ParallelJobs = 0
768 +
769 +; Controls SystemVerilog Language Extensions. These options enable
770 +; some non-LRM compliant behavior. Valid extensions are "feci",
771 +; "pae", "uslt", "spsl", "fin0" and "sccts".
772 +; SvExtensions = uslt,spsl,sccts
773 +
774 +; Load the specified shared objects with the RTLD_GLOBAL flag.
775 +; This gives global visibility to all symbols in the shared objects,
776 +; meaning that subsequently loaded shared objects can bind to symbols
777 +; in the global shared objects. The list of shared objects should
778 +; be whitespace delimited. This option is not supported on the
779 +; Windows or AIX platforms.
780 +; GlobalSharedObjectList = example1.so example2.so example3.so
781 +
782 +; Disable SystemVerilog elaboration system task messages
783 +; IgnoreSVAInfo = 1
784 +; IgnoreSVAWarning = 1
785 +; IgnoreSVAError = 1
786 +; IgnoreSVAFatal = 1
787 +
788 +; Enable or disable automatic creation of missing libraries.
789 +; Default is 1 (enabled)
790 +; CreateLib = 1
791 +
792 +
793 +[vsim]
794 +; vopt flow
795 +; Set to turn on automatic optimization of a design.
796 +; Default is on
797 +VoptFlow = 1
798 +
799 +; Simulator resolution
800 +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100.
801 +Resolution = ns
802 +
803 +; Disable certain code coverage exclusions automatically.
804 +; Assertions and FSM are exluded from the code coverage by default
805 +; Set AutoExclusionsDisable = fsm to enable code coverage for fsm
806 +; Set AutoExclusionsDisable = assertions to enable code coverage for assertions
807 +; Set AutoExclusionsDisable = all to enable code coverage for all the automatic exclusions
808 +; Or specify comma or space separated list
809 +;AutoExclusionsDisable = fsm,assertions
810 +
811 +; User time unit for run commands
812 +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the
813 +; unit specified for Resolution. For example, if Resolution is 100ps,
814 +; then UserTimeUnit defaults to ps.
815 +; Should generally be set to default.
816 +UserTimeUnit = default
817 +
818 +; Default run length
819 +RunLength = 100 ns
820 +
821 +; Maximum iterations that can be run without advancing simulation time
822 +IterationLimit = 10000000
823 +
824 +; Specify libraries to be searched for precompiled modules
825 +; LibrarySearchPath = <path/lib> [<path/lib> ...]
826 +
827 +; Set XPROP assertion fail limit. Default is 5.
828 +; Any positive integer, -1 for infinity.
829 +; XpropAssertionLimit = 5
830 +
831 +; Control PSL and Verilog Assume directives during simulation
832 +; Set SimulateAssumeDirectives = 0 to disable assume being simulated as asserts
833 +; Set SimulateAssumeDirectives = 1 to enable assume simulation as asserts
834 +; SimulateAssumeDirectives = 1
835 +
836 +; Control the simulation of PSL and SVA
837 +; These switches can be overridden by the vsim command line switches:
838 +; -psl, -nopsl, -sva, -nosva.
839 +; Set SimulatePSL = 0 to disable PSL simulation
840 +; Set SimulatePSL = 1 to enable PSL simulation (default)
841 +; SimulatePSL = 1
842 +; Set SimulateSVA = 0 to disable SVA simulation
843 +; Set SimulateSVA = 1 to enable concurrent SVA simulation (default)
844 +; SimulateSVA = 1
845 +
846 +; Control SVA and VHDL immediate assertion directives during simulation
847 +; Set SimulateImmedAsserts = 0 to disable simulation of immediate asserts
848 +; Set SimulateImmedAsserts = 1 to enable simulation of immediate asserts
849 +; SimulateImmedAsserts = 1
850 +
851 +; License feature mappings for Verilog and VHDL
852 +; qhsimvh Single language VHDL license
853 +; qhsimvl Single language Verilog license
854 +; msimhdlsim Language neutral license for either Verilog or VHDL
855 +; msimhdlmix Second language only, language neutral license for either
856 +; Verilog or VHDL
857 +;
858 +; Directives to license manager can be set either as single value or as
859 +; space separated multi-values:
860 +; vhdl Immediately checkout and hold a VHDL license (i.e., one of
861 +; qhsimvh, msimhdlsim, or msimhdlmix)
862 +; vlog Immediately checkout and hold a Verilog license (i.e., one of
863 +; qhsimvl, msimhdlsim, or msimhdlmix)
864 +; plus Immediately checkout and hold a VHDL license and a Verilog license
865 +; noqueue Do not wait in the license queue when a license is not available
866 +; viewsim Try for viewer license but accept simulator license(s) instead
867 +; of queuing for viewer license (PE ONLY)
868 +; noviewer Disable checkout of msimviewer license feature (PE ONLY)
869 +; noslvhdl Disable checkout of qhsimvh license feature
870 +; noslvlog Disable checkout of qhsimvl license feature
871 +; nomix Disable checkout of msimhdlmix license feature
872 +; nolnl Disable checkout of msimhdlsim license feature
873 +; mixedonly Disable checkout of qhsimvh and qhsimvl license features
874 +; lnlonly Disable checkout of qhsimvh,qhsimvl, and msimhdlmix license features
875 +;
876 +; Examples (remove ";" comment character to activate licensing directives):
877 +; Single directive:
878 +; License = plus
879 +; Multi-directive (Note: space delimited directives):
880 +; License = noqueue plus
881 +
882 +; Severity level of a VHDL assertion message or of a SystemVerilog severity system task
883 +; which will cause a running simulation to stop.
884 +; VHDL assertions and SystemVerilog severity system task that occur with the
885 +; given severity or higher will cause a running simulation to stop.
886 +; This value is ignored during elaboration.
887 +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal
888 +BreakOnAssertion = 3
889 +
890 +; Severity level of a tool message which will cause a running simulation to
891 +; stop. This value is ignored during elaboration. Default is to not break.
892 +; 0 = Note 1 = Warning 2 = Error 3 = Fatal
893 +;BreakOnMessage = 2
894 +
895 +; The class debug feature enables more visibility and tracking of class instances
896 +; during simulation. By default this feature is disabled (0). To enable this
897 +; feature set ClassDebug to 1.
898 +; ClassDebug = 1
899 +
900 +; Message Format conversion specifications:
901 +; %S - Severity Level of message/assertion
902 +; %R - Text of message
903 +; %T - Time of message
904 +; %D - Delta value (iteration number) of Time
905 +; %K - Kind of path: Instance/Region/Signal/Process/Foreign Process/Unknown/Protected
906 +; %i - Instance/Region/Signal pathname with Process name (if available)
907 +; %I - shorthand for one of these:
908 +; " %K: %i"
909 +; " %K: %i File: %F" (when path is not Process or Signal)
910 +; except that the %i in this case does not report the Process name
911 +; %O - Process name
912 +; %P - Instance/Region path without leaf process
913 +; %F - File name
914 +; %L - Line number; if assertion message, then line number of assertion or, if
915 +; assertion is in a subprogram, line from which the call is made
916 +; %u - Design unit name in form library.primary
917 +; %U - Design unit name in form library.primary(secondary)
918 +; %% - The '%' character itself
919 +;
920 +; If specific format for Severity Level is defined, use that format.
921 +; Else, for a message that occurs during elaboration:
922 +; -- Failure/Fatal message in VHDL region that is not a Process, and in
923 +; certain non-VHDL regions, uses MessageFormatBreakLine;
924 +; -- Failure/Fatal message otherwise uses MessageFormatBreak;
925 +; -- Note/Warning/Error message uses MessageFormat.
926 +; Else, for a message that occurs during runtime and triggers a breakpoint because
927 +; of the BreakOnAssertion setting:
928 +; -- if in a VHDL region that is not a Process, uses MessageFormatBreakLine;
929 +; -- otherwise uses MessageFormatBreak.
930 +; Else (a runtime message that does not trigger a breakpoint) uses MessageFormat.
931 +;
932 +; MessageFormatNote = "** %S: %R\n Time: %T Iteration: %D%I\n"
933 +; MessageFormatWarning = "** %S: %R\n Time: %T Iteration: %D%I\n"
934 +; MessageFormatError = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n"
935 +; MessageFormatFail = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n"
936 +; MessageFormatFatal = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n"
937 +; MessageFormatBreakLine = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F Line: %L\n"
938 +; MessageFormatBreak = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n"
939 +; MessageFormat = "** %S: %R\n Time: %T Iteration: %D%I\n"
940 +
941 +; Error File - alternate file for storing error messages
942 +; ErrorFile = error.log
943 +
944 +; Simulation Breakpoint messages
945 +; This flag controls the display of function names when reporting the location
946 +; where the simulator stops because of a breakpoint or fatal error.
947 +; Example with function name: # Break in Process ctr at counter.vhd line 44
948 +; Example without function name: # Break at counter.vhd line 44
949 +; Default value is 1.
950 +ShowFunctions = 1
951 +
952 +; Default radix for all windows and commands.
953 +; Radix may be one of: symbolic, ascii, binary, octal, decimal, hex, unsigned
954 +; Flags may be one of: enumnumeric, showbase
955 +DefaultRadix = hexadecimal
956 +DefaultRadixFlags = showbase
957 +; Set to 1 for make the signal_force VHDL and Verilog functions use the
958 +; default radix when processing the force value. Prior to 10.2 signal_force
959 +; used the default radix, now it always uses symbolic unless value explicitly indicates base
960 +;SignalForceFunctionUseDefaultRadix = 0
961 +
962 +; VSIM Startup command
963 +; Startup = do startup.do
964 +
965 +; VSIM Shutdown file
966 +; Filename to save u/i formats and configurations.
967 +; ShutdownFile = restart.do
968 +; To explicitly disable auto save:
969 +; ShutdownFile = --disable-auto-save
970 +
971 +; Run simulator in batch mode as if -batch were specified on the command line if none of -c, -gui, or -i specified.
972 +; Simulator runs in interactive mode as if -i were specified if this option is 0. Default is 0.
973 +; BatchMode = 1
974 +
975 +; File for saving command transcript when -batch option used
976 +; This option is ignored when -c, -gui, or -i options are used or if BatchMode above is zero
977 +; default is unset so command transcript only goes to stdout for better performance
978 +; BatchTranscriptFile = transcript
979 +
980 +; File for saving command transcript, this option is ignored when -batch option is used
981 +TranscriptFile = transcript
982 +
983 +; File for saving command history
984 +; CommandHistory = cmdhist.log
985 +
986 +; Specify whether paths in simulator commands should be described
987 +; in VHDL or Verilog format.
988 +; For VHDL, PathSeparator = /
989 +; For Verilog, PathSeparator = .
990 +; Must not be the same character as DatasetSeparator.
991 +PathSeparator = /
992 +
993 +; Specify the dataset separator for fully rooted contexts.
994 +; The default is ':'. For example: sim:/top
995 +; Must not be the same character as PathSeparator.
996 +DatasetSeparator = :
997 +
998 +; Specify a unique path separator for the Signal Spy set of functions.
999 +; The default will be to use the PathSeparator variable.
1000 +; Must not be the same character as DatasetSeparator.
1001 +; SignalSpyPathSeparator = /
1002 +
1003 +; Used to control parsing of HDL identifiers input to the tool.
1004 +; This includes CLI commands, vsim/vopt/vlog/vcom options,
1005 +; string arguments to FLI/VPI/DPI calls, etc.
1006 +; If set to 1, accept either Verilog escaped Id syntax or
1007 +; VHDL extended id syntax, regardless of source language.
1008 +; If set to 0, the syntax of the source language must be used.
1009 +; Each identifier in a hierarchical name may need different syntax,
1010 +; e.g. "/top/\vhdl*ext*id\/middle/\vlog*ext*id /bottom" or
1011 +; "top.\vhdl*ext*id\.middle.\vlog*ext*id .bottom"
1012 +; GenerousIdentifierParsing = 1
1013 +
1014 +; Disable VHDL assertion messages
1015 +; IgnoreNote = 1
1016 +; IgnoreWarning = 1
1017 +; IgnoreError = 1
1018 +; IgnoreFailure = 1
1019 +
1020 +; Disable SystemVerilog assertion messages
1021 +; IgnoreSVAInfo = 1
1022 +; IgnoreSVAWarning = 1
1023 +; IgnoreSVAError = 1
1024 +; IgnoreSVAFatal = 1
1025 +
1026 +; Do not print any additional information from Severity System tasks.
1027 +; Only the message provided by the user is printed along with severity
1028 +; information.
1029 +; SVAPrintOnlyUserMessage = 1;
1030 +
1031 +; Default force kind. May be freeze, drive, deposit, or default
1032 +; or in other terms, fixed, wired, or charged.
1033 +; A value of "default" will use the signal kind to determine the
1034 +; force kind, drive for resolved signals, freeze for unresolved signals
1035 +; DefaultForceKind = freeze
1036 +
1037 +; Control the iteration of events when a VHDL signal is forced to a value
1038 +; This flag can be set to honour the signal update event in next iteration,
1039 +; the default is to update and propagate in the same iteration.
1040 +; ForceSigNextIter = 1
1041 +
1042 +; Enable simulation statistics. Specify one or more arguments:
1043 +; [all,none,time,cmd,msg,perf,verbose,list,kb,eor]
1044 +; Add '-' to disable specific statistics. Default is [time,cmd,msg].
1045 +; Stats = time,cmd,msg
1046 +
1047 +; If zero, open files when elaborated; otherwise, open files on
1048 +; first read or write. Default is 0.
1049 +; DelayFileOpen = 1
1050 +
1051 +; Control VHDL files opened for write.
1052 +; 0 = Buffered, 1 = Unbuffered
1053 +UnbufferedOutput = 0
1054 +
1055 +; Control the number of VHDL files open concurrently.
1056 +; This number should always be less than the current ulimit
1057 +; setting for max file descriptors.
1058 +; 0 = unlimited
1059 +ConcurrentFileLimit = 40
1060 +
1061 +; If nonzero, close files as soon as there is either an explicit call to
1062 +; file_close, or when the file variable's scope is closed. When zero, a
1063 +; file opened in append mode is not closed in case it is immediately
1064 +; reopened in append mode; otherwise, the file will be closed at the
1065 +; point it is reopened.
1066 +; AppendClose = 1
1067 +
1068 +; Control the number of hierarchical regions displayed as
1069 +; part of a signal name shown in the Wave window.
1070 +; A value of zero tells VSIM to display the full name.
1071 +; The default is 0.
1072 +; WaveSignalNameWidth = 0
1073 +
1074 +; Turn off warnings when changing VHDL constants and generics
1075 +; Default is 1 to generate warning messages
1076 +; WarnConstantChange = 0
1077 +
1078 +; Turn off warnings from accelerated versions of the std_logic_arith,
1079 +; std_logic_unsigned, and std_logic_signed packages.
1080 +; StdArithNoWarnings = 1
1081 +
1082 +; Turn off warnings from accelerated versions of the IEEE numeric_std
1083 +; and numeric_bit packages.
1084 +; NumericStdNoWarnings = 1
1085 +
1086 +; Use old-style (pre-6.6) VHDL FOR GENERATE statement iteration names
1087 +; in the design hierarchy.
1088 +; This style is controlled by the value of the GenerateFormat
1089 +; value described next. Default is to use new-style names, which
1090 +; comprise the generate statement label, '(', the value of the generate
1091 +; parameter, and a closing ')'.
1092 +; Set this to 1 to use old-style names.
1093 +; OldVhdlForGenNames = 1
1094 +
1095 +; Control the format of the old-style VHDL FOR generate statement region
1096 +; name for each iteration. Do not quote the value.
1097 +; The format string here must contain the conversion codes %s and %d,
1098 +; in that order, and no other conversion codes. The %s represents
1099 +; the generate statement label; the %d represents the generate parameter value
1100 +; at a particular iteration (this is the position number if the generate parameter
1101 +; is of an enumeration type). Embedded whitespace is allowed (but discouraged);
1102 +; leading and trailing whitespace is ignored.
1103 +; Application of the format must result in a unique region name over all
1104 +; loop iterations for a particular immediately enclosing scope so that name
1105 +; lookup can function properly. The default is %s__%d.
1106 +; GenerateFormat = %s__%d
1107 +
1108 +; Enable more efficient logging of VHDL Variables.
1109 +; Logging VHDL variables without this enabled, while possible, is very
1110 +; inefficient. Enabling this will provide a more efficient logging methodology
1111 +; at the expense of more memory usage. By default this feature is disabled (0).
1112 +; To enabled this feature, set this variable to 1.
1113 +; VhdlVariableLogging = 1
1114 +
1115 +; Enable logging of VHDL access type variables and their designated objects.
1116 +; This setting will allow both variables of an access type ("access variables")
1117 +; and their designated objects ("access objects") to be logged. Logging a
1118 +; variable of an access type will automatically also cause the designated
1119 +; object(s) of that variable to be logged as the simulation progresses.
1120 +; Further, enabling this allows access objects to be logged by name. By default
1121 +; this feature is disabled (0). To enable this feature, set this variable to 1.
1122 +; Enabling this will automatically enable the VhdlVariableLogging feature also.
1123 +; AccessObjDebug = 1
1124 +
1125 +; Make each VHDL package in a PDU has its own separate copy of the package instead
1126 +; of sharing the package between PDUs. The default is to share packages.
1127 +; To ensure that each PDU has its own set of packages, set this variable to 1.
1128 +; VhdlSeparatePduPackage = 1
1129 +
1130 +; Specify whether checkpoint files should be compressed.
1131 +; The default is 1 (compressed).
1132 +; CheckpointCompressMode = 0
1133 +
1134 +; Specify gcc compiler used in the compilation of automatically generated DPI exportwrapper.
1135 +; Use custom gcc compiler located at this path rather than the default path.
1136 +; The path should point directly at a compiler executable.
1137 +; DpiCppPath = <your-gcc-installation>/bin/gcc
1138 +
1139 +; Specify whether to enable SystemVerilog DPI "out-of-the-blue" calls.
1140 +; The term "out-of-the-blue" refers to SystemVerilog export function calls
1141 +; made from C functions that don't have the proper context setup
1142 +; (as is the case when running under "DPI-C" import functions).
1143 +; When this is enabled, one can call a DPI export function
1144 +; (but not task) from any C code.
1145 +; the setting of this variable can be one of the following values:
1146 +; 0 : dpioutoftheblue call is disabled (default)
1147 +; 1 : dpioutoftheblue call is enabled, but export call debug support is not available.
1148 +; 2 : dpioutoftheblue call is enabled, and limited export call debug support is available.
1149 +; DpiOutOfTheBlue = 1
1150 +
1151 +; Specify whether continuous assignments are run before other normal priority
1152 +; processes scheduled in the same iteration. This event ordering minimizes race
1153 +; differences between optimized and non-optimized designs, and is the default
1154 +; behavior beginning with the 6.5 release. For pre-6.5 event ordering, set
1155 +; ImmediateContinuousAssign to 0.
1156 +; The default is 1 (enabled).
1157 +; ImmediateContinuousAssign = 0
1158 +
1159 +; List of dynamically loaded objects for Verilog PLI applications
1160 +; Veriuser = veriuser.sl
1161 +
1162 +; Which default VPI object model should the tool conform to?
1163 +; The 1364 modes are Verilog-only, for backwards compatibility with older
1164 +; libraries, and SystemVerilog objects are not available in these modes.
1165 +;
1166 +; In the absence of a user-specified default, the tool default is the
1167 +; latest available LRM behavior.
1168 +; Options for PliCompatDefault are:
1169 +; VPI_COMPATIBILITY_VERSION_1364v1995
1170 +; VPI_COMPATIBILITY_VERSION_1364v2001
1171 +; VPI_COMPATIBILITY_VERSION_1364v2005
1172 +; VPI_COMPATIBILITY_VERSION_1800v2005
1173 +; VPI_COMPATIBILITY_VERSION_1800v2008
1174 +;
1175 +; Synonyms for each string are also recognized:
1176 +; VPI_COMPATIBILITY_VERSION_1364v1995 (1995, 95, 1364v1995, 1364V1995, VL1995)
1177 +; VPI_COMPATIBILITY_VERSION_1364v2001 (2001, 01, 1364v2001, 1364V2001, VL2001)
1178 +; VPI_COMPATIBILITY_VERSION_1364v2005 (1364v2005, 1364V2005, VL2005)
1179 +; VPI_COMPATIBILITY_VERSION_1800v2005 (2005, 05, 1800v2005, 1800V2005, SV2005)
1180 +; VPI_COMPATIBILITY_VERSION_1800v2008 (2008, 08, 1800v2008, 1800V2008, SV2008)
1181 +
1182 +
1183 +; PliCompatDefault = VPI_COMPATIBILITY_VERSION_1800v2005
1184 +
1185 +; Specify whether the Verilog system task $fopen or vpi_mcd_open()
1186 +; will create directories that do not exist when opening the file
1187 +; in "a" or "w" mode.
1188 +; The default is 0 (do not create non-existent directories)
1189 +; CreateDirForFileAccess = 1
1190 +
1191 +; Specify default options for the restart command. Options can be one
1192 +; or more of: -force -nobreakpoint -nolist -nolog -nowave -noassertions
1193 +; DefaultRestartOptions = -force
1194 +
1195 +
1196 +; Specify default UVM-aware debug options if the vsim -uvmcontrol switch is not used.
1197 +; Valid options include: all, none, verbose, disable, struct, msglog, trlog, certe.
1198 +; Options can be enabled by just adding the name, or disabled by prefixing the option with a "-".
1199 +; The list of options must be delimited by commas, without spaces or tabs.
1200 +; The default is UVMControl = struct
1201 +
1202 +; Some examples
1203 +; To turn on all available UVM-aware debug features:
1204 +; UVMControl = all
1205 +; To turn on the struct window, mesage logging, and transaction logging:
1206 +; UVMControl = struct,msglog,trlog
1207 +; To turn on all options except certe:
1208 +; UVMControl = all,-certe
1209 +; To completely disable all UVM-aware debug functionality:
1210 +; UVMControl = disable
1211 +
1212 +; Specify the WildcardFilter setting.
1213 +; A space separated list of object types to be excluded when performing
1214 +; wildcard matches with log, wave, etc commands. The default value for this variable is:
1215 +; "Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile"
1216 +; See "Using the WildcardFilter Preference Variable" in the documentation for
1217 +; details on how to use this variable and for descriptions of the filter types.
1218 +WildcardFilter = Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile
1219 +
1220 +; Specify the WildcardSizeThreshold setting.
1221 +; This integer setting specifies the size at which objects will be excluded when
1222 +; performing wildcard matches with log, wave, etc commands. Objects of size equal
1223 +; to or greater than the WildcardSizeThreshold will be filtered out from the wildcard
1224 +; matches. The size is a simple calculation of number of bits or items in the object.
1225 +; The default value is 8k (8192). Setting this value to 0 will disable the checking
1226 +; of object size against this threshold and allow all objects of any size to be logged.
1227 +WildcardSizeThreshold = 8192
1228 +
1229 +; Specify whether warning messages are output when objects are filtered out due to the
1230 +; WildcardSizeThreshold. The default is 0 (no messages generated).
1231 +WildcardSizeThresholdVerbose = 0
1232 +
1233 +; Turn on (1) or off (0) WLF file compression.
1234 +; The default is 1 (compress WLF file).
1235 +; WLFCompress = 0
1236 +
1237 +; Specify whether to save all design hierarchy (1) in the WLF file
1238 +; or only regions containing logged signals (0).
1239 +; The default is 0 (save only regions with logged signals).
1240 +; WLFSaveAllRegions = 1
1241 +
1242 +; WLF file time limit. Limit WLF file by time, as closely as possible,
1243 +; to the specified amount of simulation time. When the limit is exceeded
1244 +; the earliest times get truncated from the file.
1245 +; If both time and size limits are specified the most restrictive is used.
1246 +; UserTimeUnits are used if time units are not specified.
1247 +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms}
1248 +; WLFTimeLimit = 0
1249 +
1250 +; WLF file size limit. Limit WLF file size, as closely as possible,
1251 +; to the specified number of megabytes. If both time and size limits
1252 +; are specified then the most restrictive is used.
1253 +; The default is 0 (no limit).
1254 +; WLFSizeLimit = 1000
1255 +
1256 +; Specify whether or not a WLF file should be deleted when the
1257 +; simulation ends. A value of 1 will cause the WLF file to be deleted.
1258 +; The default is 0 (do not delete WLF file when simulation ends).
1259 +; WLFDeleteOnQuit = 1
1260 +
1261 +; Specify whether or not a WLF file should be optimized during
1262 +; simulation. If set to 0, the WLF file will not be optimized.
1263 +; The default is 1, optimize the WLF file.
1264 +; WLFOptimize = 0
1265 +
1266 +; Specify the name of the WLF file.
1267 +; The default is vsim.wlf
1268 +; WLFFilename = vsim.wlf
1269 +
1270 +; Specify whether to lock the WLF file.
1271 +; Locking the file prevents other invocations of ModelSim/Questa tools from
1272 +; inadvertently overwriting the WLF file.
1273 +; The default is 1, lock the WLF file.
1274 +; WLFFileLock = 0
1275 +
1276 +; Specify the update interval for the WLF file in live simulation.
1277 +; The interval is given in seconds.
1278 +; The value is the smallest interval between WLF file updates. The WLF file
1279 +; will be flushed (updated) after (at least) the interval has elapsed, ensuring
1280 +; that the data is correct when viewed from a separate viewer.
1281 +; A value of 0 means that no updating will occur.
1282 +; The default value is 10 seconds.
1283 +; WLFUpdateInterval = 10
1284 +
1285 +; Specify the WLF cache size limit for WLF files.
1286 +; The value is given in megabytes. A value of 0 turns off the cache.
1287 +; On non-Windows platforms the default WLFCacheSize setting is 2000 (megabytes).
1288 +; On Windows, the default value is 1000 (megabytes) to help to avoid filling
1289 +; process memory.
1290 +; WLFSimCacheSize allows a different cache size to be set for a live simulation
1291 +; WLF file, independent of post-simulation WLF file viewing. If WLFSimCacheSize
1292 +; is not set, it defaults to the WLFCacheSize value.
1293 +; WLFCacheSize = 2000
1294 +; WLFSimCacheSize = 500
1295 +
1296 +; Specify the WLF file event collapse mode.
1297 +; 0 = Preserve all events and event order. (same as -wlfnocollapse)
1298 +; 1 = Only record values of logged objects at the end of a simulator iteration.
1299 +; (same as -wlfcollapsedelta)
1300 +; 2 = Only record values of logged objects at the end of a simulator time step.
1301 +; (same as -wlfcollapsetime)
1302 +; The default is 1.
1303 +; WLFCollapseMode = 0
1304 +
1305 +; Specify whether WLF file logging can use threads on multi-processor machines.
1306 +; If 0, no threads will be used; if 1, threads will be used if the system has
1307 +; more than one processor.
1308 +; WLFUseThreads = 1
1309 +
1310 +; Specify the size of objects that will trigger "large object" messages
1311 +; at log/wave/list time. The size calculation of the object is the same as that
1312 +; used by the WildcardSizeThreshold. The default LargeObjectSize size is 500,000.
1313 +; Setting LargeObjectSize to 0 will disable these messages.
1314 +; LargeObjectSize = 500000
1315 +
1316 +; Specify the depth of stack frames returned by $stacktrace([level]).
1317 +; This depth will be picked up when the optional 'level' argument
1318 +; is not specified or its value is not a positive integer.
1319 +; StackTraceDepth = 100
1320 +
1321 +; Turn on/off undebuggable SystemC type warnings. Default is on.
1322 +; ShowUndebuggableScTypeWarning = 0
1323 +
1324 +; Turn on/off unassociated SystemC name warnings. Default is off.
1325 +; ShowUnassociatedScNameWarning = 1
1326 +
1327 +; Turn on/off SystemC IEEE 1666 deprecation warnings. Default is off.
1328 +; ScShowIeeeDeprecationWarnings = 1
1329 +
1330 +; Turn on/off the check for multiple drivers on a SystemC sc_signal. Default is off.
1331 +; ScEnableScSignalWriteCheck = 1
1332 +
1333 +; Set SystemC default time unit.
1334 +; Set to fs, ps, ns, us, ms, or sec with optional
1335 +; prefix of 1, 10, or 100. The default is 1 ns.
1336 +; The ScTimeUnit value is honored if it is coarser than Resolution.
1337 +; If ScTimeUnit is finer than Resolution, it is set to the value
1338 +; of Resolution. For example, if Resolution is 100ps and ScTimeUnit is ns,
1339 +; then the default time unit will be 1 ns. However if Resolution
1340 +; is 10 ns and ScTimeUnit is ns, then the default time unit will be 10 ns.
1341 +ScTimeUnit = ns
1342 +
1343 +; Set SystemC sc_main stack size. The stack size is set as an integer
1344 +; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or
1345 +; Gb(Giga-byte). Default is 10 Mb. The stack size for sc_main depends
1346 +; on the amount of data on the sc_main() stack and the memory required
1347 +; to succesfully execute the longest function call chain of sc_main().
1348 +ScMainStackSize = 10 Mb
1349 +
1350 +; Set SystemC thread stack size. The stack size is set as an integer
1351 +; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or
1352 +; Gb(Giga-byte). The stack size for sc_thread depends
1353 +; on the amount of data on the sc_thread stack and the memory required
1354 +; to succesfully execute the thread.
1355 +; ScStackSize = 1 Mb
1356 +
1357 +; Turn on/off execution of remainder of sc_main upon quitting the current
1358 +; simulation session. If the cumulative length of sc_main() in terms of
1359 +; simulation time units is less than the length of the current simulation
1360 +; run upon quit or restart, sc_main() will be in the middle of execution.
1361 +; This switch gives the option to execute the remainder of sc_main upon
1362 +; quitting simulation. The drawback of not running sc_main till the end
1363 +; is memory leaks for objects created by sc_main. If on, the remainder of
1364 +; sc_main will be executed ignoring all delays. This may cause the simulator
1365 +; to crash if the code in sc_main is dependent on some simulation state.
1366 +; Default is on.
1367 +ScMainFinishOnQuit = 1
1368 +
1369 +; Set the SCV relationship name that will be used to identify phase
1370 +; relations. If the name given to a transactor relation matches this
1371 +; name, the transactions involved will be treated as phase transactions
1372 +ScvPhaseRelationName = mti_phase
1373 +
1374 +; Customize the vsim kernel shutdown behavior at the end of the simulation.
1375 +; Some common causes of the end of simulation are $finish (implicit or explicit),
1376 +; sc_stop(), tf_dofinish(), and assertion failures.
1377 +; This should be set to "ask", "exit", or "stop". The default is "ask".
1378 +; "ask" -- In batch mode, the vsim kernel will abruptly exit.
1379 +; In GUI mode, a dialog box will pop up and ask for user confirmation
1380 +; whether or not to quit the simulation.
1381 +; "stop" -- Cause the simulation to stay loaded in memory. This can make some
1382 +; post-simulation tasks easier.
1383 +; "exit" -- The simulation will abruptly exit without asking for any confirmation.
1384 +; "final" -- Run SystemVerilog final blocks then behave as "stop".
1385 +; Note: This variable can be overridden with the vsim "-onfinish" command line switch.
1386 +OnFinish = ask
1387 +
1388 +; Print pending deferred assertion messages.
1389 +; Deferred assertion messages may be scheduled after the $finish in the same
1390 +; time step. Deferred assertions scheduled to print after the $finish are
1391 +; printed before exiting with severity level NOTE since it's not known whether
1392 +; the assertion is still valid due to being printed in the active region
1393 +; instead of the reactive region where they are normally printed.
1394 +; OnFinishPendingAssert = 1;
1395 +
1396 +; Print "simstats" result. Default is 0.
1397 +; 0 == do not print simstats
1398 +; 1 == print at end of simulation
1399 +; 2 == print at end of each run command and end of simulation
1400 +; PrintSimStats = 1
1401 +
1402 +; Assertion File - alternate file for storing VHDL/PSL/Verilog assertion messages
1403 +; AssertFile = assert.log
1404 +
1405 +; Enable assertion counts. Default is off.
1406 +; AssertionCover = 1
1407 +
1408 +; Run simulator in assertion debug mode. Default is off.
1409 +; AssertionDebug = 1
1410 +
1411 +; Turn on/off PSL/SVA/VHDL assertion enable. Default is on.
1412 +; AssertionEnable = 0
1413 +
1414 +; Set PSL/SVA/VHDL concurrent assertion fail limit. Default is -1.
1415 +; Any positive integer, -1 for infinity.
1416 +; AssertionLimit = 1
1417 +
1418 +; Turn on/off concurrent assertion pass log. Default is off.
1419 +; Assertion pass logging is only enabled when assertion is browseable
1420 +; and assertion debug is enabled.
1421 +; AssertionPassLog = 1
1422 +
1423 +; Turn on/off PSL concurrent assertion fail log. Default is on.
1424 +; The flag does not affect SVA
1425 +; AssertionFailLog = 0
1426 +
1427 +; Turn on/off SVA concurrent assertion local var printing in -assertdebug mode. Default is on.
1428 +; AssertionFailLocalVarLog = 0
1429 +
1430 +; Set action type for PSL/SVA concurrent assertion fail action. Default is continue.
1431 +; 0 = Continue 1 = Break 2 = Exit
1432 +; AssertionFailAction = 1
1433 +
1434 +; Enable the active thread monitor in the waveform display when assertion debug is enabled.
1435 +; AssertionActiveThreadMonitor = 1
1436 +
1437 +; Control how many waveform rows will be used for displaying the active threads. Default is 5.
1438 +; AssertionActiveThreadMonitorLimit = 5
1439 +
1440 +; Assertion thread limit after which assertion would be killed/switched off.
1441 +; The default is -1 (unlimited). If the number of threads for an assertion go
1442 +; beyond this limit, the assertion would be either switched off or killed. This
1443 +; limit applies to only assert directives.
1444 +;AssertionThreadLimit = -1
1445 +
1446 +; Action to be taken once the assertion thread limit is reached. Default
1447 +; is kill. It can have a value of off or kill. In case of kill, all the existing
1448 +; threads are terminated and no new attempts are started. In case of off, the
1449 +; existing attempts keep on evaluating but no new attempts are started. This
1450 +; variable applies to only assert directives.
1451 +;AssertionThreadLimitAction = kill
1452 +
1453 +; Cover thread limit after which cover would be killed/switched off.
1454 +; The default is -1 (unlimited). If the number of threads for a cover go
1455 +; beyond this limit, the cover would be either switched off or killed. This
1456 +; limit applies to only cover directives.
1457 +;CoverThreadLimit = -1
1458 +
1459 +; Action to be taken once the cover thread limit is reached. Default
1460 +; is kill. It can have a value of off or kill. In case of kill, all the existing
1461 +; threads are terminated and no new attempts are started. In case of off, the
1462 +; existing attempts keep on evaluating but no new attempts are started. This
1463 +; variable applies to only cover directives.
1464 +;CoverThreadLimitAction = kill
1465 +
1466 +
1467 +; By default immediate assertions do not participate in Assertion Coverage calculations
1468 +; unless they are executed. This switch causes all immediate assertions in the design
1469 +; to participate in Assertion Coverage calculations, whether attempted or not.
1470 +; UnattemptedImmediateAssertions = 0
1471 +
1472 +; By default immediate covers participate in Coverage calculations
1473 +; whether they are attempted or not. This switch causes all unattempted
1474 +; immediate covers in the design to stop participating in Coverage
1475 +; calculations.
1476 +; UnattemptedImmediateCovers = 0
1477 +
1478 +; By default pass action block is not executed for assertions on vacuous
1479 +; success. The following variable is provided to enable execution of
1480 +; pass action block on vacuous success. The following variable is only effective
1481 +; if the user does not disable pass action block execution by using either
1482 +; system tasks or CLI. Also there is a performance penalty for enabling
1483 +; the following variable.
1484 +;AssertionEnableVacuousPassActionBlock = 1
1485 +
1486 +; As per strict 1850-2005 PSL LRM, an always property can either pass
1487 +; or fail. However, by default, Questa reports multiple passes and
1488 +; multiple fails on top always/never property (always/never operator
1489 +; is the top operator under Verification Directive). The reason
1490 +; being that Questa reports passes and fails on per attempt of the
1491 +; top always/never property. Use the following flag to instruct
1492 +; Questa to strictly follow LRM. With this flag, all assert/never
1493 +; directives will start an attempt once at start of simulation.
1494 +; The attempt can either fail, match or match vacuously.
1495 +; For e.g. if always is the top operator under assert, the always will
1496 +; keep on checking the property at every clock. If the property under
1497 +; always fails, the directive will be considered failed and no more
1498 +; checking will be done for that directive. A top always property,
1499 +; if it does not fail, will show a pass at end of simulation.
1500 +; The default value is '0' (i.e. zero is off). For example:
1501 +; PslOneAttempt = 1
1502 +
1503 +; Specify the number of clock ticks to represent infinite clock ticks.
1504 +; This affects eventually!, until! and until_!. If at End of Simulation
1505 +; (EOS) an active strong-property has not clocked this number of
1506 +; clock ticks then neither pass or fail (vacuous match) is returned
1507 +; else respective fail/pass is returned. The default value is '0' (zero)
1508 +; which effectively does not check for clock tick condition. For example:
1509 +; PslInfinityThreshold = 5000
1510 +
1511 +; Control how many thread start times will be preserved for ATV viewing for a given assertion
1512 +; instance. Default is -1 (ALL).
1513 +; ATVStartTimeKeepCount = -1
1514 +
1515 +; Turn on/off code coverage
1516 +; CodeCoverage = 0
1517 +
1518 +; This option applies to condition and expression coverage UDP tables. It
1519 +; has no effect unless UDP is enabled for coverage with vcom/vlog/vopt -coverudp.
1520 +; If this option is used and a match occurs in more than one row in the UDP table,
1521 +; none of the counts for all matching rows is incremented. By default, counts are
1522 +; incremented for all matching rows.
1523 +; CoverCountAll = 1
1524 +
1525 +; Turn off automatic inclusion of VHDL integers in toggle coverage. Default
1526 +; is to include them.
1527 +; ToggleNoIntegers = 1
1528 +
1529 +; Set the maximum number of values that are collected for toggle coverage of
1530 +; VHDL integers. Default is 100;
1531 +; ToggleMaxIntValues = 100
1532 +
1533 +; Set the maximum number of values that are collected for toggle coverage of
1534 +; Verilog real. Default is 100;
1535 +; ToggleMaxRealValues = 100
1536 +
1537 +; Turn on automatic inclusion of Verilog integers in toggle coverage, except
1538 +; for enumeration types. Default is to include them.
1539 +; ToggleVlogIntegers = 0
1540 +
1541 +; Turn on automatic inclusion of Verilog real type in toggle coverage, except
1542 +; for shortreal types. Default is to not include them.
1543 +; ToggleVlogReal = 1
1544 +
1545 +; Turn on automatic inclusion of Verilog fixed-size unpacked arrays, VHDL multi-d arrays
1546 +; and VHDL arrays-of-arrays in toggle coverage.
1547 +; Default is to not include them.
1548 +; ToggleFixedSizeArray = 1
1549 +
1550 +; Increase or decrease the maximum size of Verilog unpacked fixed-size arrays,
1551 +; VHDL multi-d arrays and VHDL arrays-of-arrays that are included for toggle coverage.
1552 +; This leads to a longer simulation time with bigger arrays covered with toggle coverage.
1553 +; Default is 1024.
1554 +; ToggleMaxFixedSizeArray = 1024
1555 +
1556 +; Treat Verilog multi-dimensional packed vectors and packed structures as equivalently sized
1557 +; one-dimensional packed vectors for toggle coverage. Default is 0.
1558 +; TogglePackedAsVec = 0
1559 +
1560 +; Treat Verilog enumerated types as equivalently sized one-dimensional packed vectors for
1561 +; toggle coverage. Default is 0.
1562 +; ToggleVlogEnumBits = 0
1563 +
1564 +; Turn off automatic inclusion of VHDL records in toggle coverage.
1565 +; Default is to include them.
1566 +; ToggleVHDLRecords = 0
1567 +
1568 +; Limit the widths of registers automatically tracked for toggle coverage. Default is 128.
1569 +; For unlimited width, set to 0.
1570 +; ToggleWidthLimit = 128
1571 +
1572 +; Limit the counts that are tracked for toggle coverage. When all edges for a bit have
1573 +; reached this count, further activity on the bit is ignored. Default is 1.
1574 +; For unlimited counts, set to 0.
1575 +; ToggleCountLimit = 1
1576 +
1577 +; Change the mode of extended toggle coverage. Default is 3. Valid modes are 1, 2 and 3.
1578 +; Following is the toggle coverage calculation criteria based on extended toggle mode:
1579 +; Mode 1: 0L->1H & 1H->0L & any one 'Z' transition (to/from 'Z').
1580 +; Mode 2: 0L->1H & 1H->0L & one transition to 'Z' & one transition from 'Z'.
1581 +; Mode 3: 0L->1H & 1H->0L & all 'Z' transitions.
1582 +; ExtendedToggleMode = 3
1583 +
1584 +; Enable toggle statistics collection only for ports. Default is 0.
1585 +; TogglePortsOnly = 1
1586 +
1587 +; Limit the counts that are tracked for Focussed Expression Coverage. When a bin has
1588 +; reached this count, further tracking of the input patterns linked to it is ignored.
1589 +; Default is 1. For unlimited counts, set to 0.
1590 +; NOTE: Changing this value from its default value may affect simulation performance.
1591 +; FecCountLimit = 1
1592 +
1593 +; Limit the counts that are tracked for UDP Coverage. When a bin has
1594 +; reached this count, further tracking of the input patterns linked to it is ignored.
1595 +; Default is 1. For unlimited counts, set to 0.
1596 +; NOTE: Changing this value from its default value may affect simulation performance.
1597 +; UdpCountLimit = 1
1598 +
1599 +; Control toggle coverage deglitching period. A period of 0, eliminates delta
1600 +; cycle glitches. This is the default. The value of ToggleDeglitchPeriod needs to be either
1601 +; 0 or a time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps".
1602 +; ToggleDeglitchPeriod = 10.0ps
1603 +
1604 +; Turn on/off all PSL/SVA cover directive enables. Default is on.
1605 +; CoverEnable = 0
1606 +
1607 +; Turn on/off PSL/SVA cover log. Default is off "0".
1608 +; CoverLog = 1
1609 +
1610 +; Set "at_least" value for all PSL/SVA cover directives. Default is 1.
1611 +; CoverAtLeast = 2
1612 +
1613 +; Set "limit" value for all PSL/SVA cover directives. Default is -1.
1614 +; Any positive integer, -1 for infinity.
1615 +; CoverLimit = 1
1616 +
1617 +; Specify the coverage database filename.
1618 +; Default is "" (i.e. database is NOT automatically saved on close).
1619 +; UCDBFilename = vsim.ucdb
1620 +
1621 +; Specify the maximum limit for the number of Cross (bin) products reported
1622 +; in XML and UCDB report against a Cross. A warning is issued if the limit
1623 +; is crossed. Default is zero. vsim switch -cvgmaxrptrhscross can override this
1624 +; setting.
1625 +; MaxReportRhsSVCrossProducts = 1000
1626 +
1627 +; Specify the override for the "auto_bin_max" option for the Covergroups.
1628 +; If not specified then value from Covergroup "option" is used.
1629 +; SVCoverpointAutoBinMax = 64
1630 +
1631 +; Specify the override for the value of "cross_num_print_missing"
1632 +; option for the Cross in Covergroups. If not specified then value
1633 +; specified in the "option.cross_num_print_missing" is used. This
1634 +; is a runtime option. NOTE: This overrides any "cross_num_print_missing"
1635 +; value specified by user in source file and any SVCrossNumPrintMissingDefault
1636 +; specified in modelsim.ini.
1637 +; SVCrossNumPrintMissing = 0
1638 +
1639 +; Specify whether to use the value of "cross_num_print_missing"
1640 +; option in report and GUI for the Cross in Covergroups. If not specified then
1641 +; cross_num_print_missing is ignored for creating reports and displaying
1642 +; covergroups in GUI. Default is 0, which means ignore "cross_num_print_missing".
1643 +; UseSVCrossNumPrintMissing = 0
1644 +
1645 +; Specify the threshold of Coverpoint wildcard bin value range size, above which
1646 +; a warning will be triggered. The default is 4K -- 12 wildcard bits.
1647 +; SVCoverpointWildCardBinValueSizeWarn = 4096
1648 +
1649 +; Specify the override for the value of "strobe" option for the
1650 +; Covergroup Type. If not specified then value in "type_option.strobe"
1651 +; will be used. This is runtime option which forces "strobe" to
1652 +; user specified value and supersedes user specified values in the
1653 +; SystemVerilog Code. NOTE: This also overrides the compile time
1654 +; default value override specified using "SVCovergroupStrobeDefault"
1655 +; SVCovergroupStrobe = 0
1656 +
1657 +; Override for explicit assignments in source code to "option.goal" of
1658 +; SystemVerilog covergroup, coverpoint, and cross. It also overrides the
1659 +; default value of "option.goal" (defined to be 100 in the SystemVerilog
1660 +; LRM) and the value of modelsim.ini variable "SVCovergroupGoalDefault".
1661 +; SVCovergroupGoal = 100
1662 +
1663 +; Override for explicit assignments in source code to "type_option.goal" of
1664 +; SystemVerilog covergroup, coverpoint, and cross. It also overrides the
1665 +; default value of "type_option.goal" (defined to be 100 in the SystemVerilog
1666 +; LRM) and the value of modelsim.ini variable "SVCovergroupTypeGoalDefault".
1667 +; SVCovergroupTypeGoal = 100
1668 +
1669 +; Enforce the 6.3 behavior of covergroup get_coverage() and get_inst_coverage()
1670 +; builtin functions, and report. This setting changes the default values of
1671 +; option.get_inst_coverage and type_option.merge_instances to ensure the 6.3
1672 +; behavior if explicit assignments are not made on option.get_inst_coverage and
1673 +; type_option.merge_instances by the user. There are two vsim command line
1674 +; options, -cvg63 and -nocvg63 to override this setting from vsim command line.
1675 +; The default value of this variable from release 6.6 onwards is 0. This default
1676 +; drives compliance with the clarified behavior in the IEEE 1800-2009 standard.
1677 +; SVCovergroup63Compatibility = 0
1678 +
1679 +; Enforce the default behavior of covergroup get_coverage() builtin function, GUI
1680 +; and report. This variable sets the default value of type_option.merge_instances.
1681 +; There are two vsim command line options, -cvgmergeinstances and
1682 +; -nocvgmergeinstances to override this setting from vsim command line.
1683 +; The default value of this variable is 0. This default
1684 +; drives compliance with the clarified behavior in the IEEE 1800-2009 standard.
1685 +; SVCovergroupMergeInstancesDefault = 0
1686 +
1687 +; Enable or disable generation of more detailed information about the sampling
1688 +; of covergroup, cross, and coverpoints. It provides the details of the number
1689 +; of times the covergroup instance and type were sampled, as well as details
1690 +; about why covergroup, cross and coverpoint were not covered. A non-zero value
1691 +; is to enable this feature. 0 is to disable this feature. Default is 0
1692 +; SVCovergroupSampleInfo = 0
1693 +
1694 +; Specify the maximum number of Coverpoint bins in whole design for
1695 +; all Covergroups.
1696 +; MaxSVCoverpointBinsDesign = 2147483648
1697 +
1698 +; Specify maximum number of Coverpoint bins in any instance of a Covergroup, default is 2^10 bins
1699 +; MaxSVCoverpointBinsInst = 1048576
1700 +
1701 +; Specify the maximum number of Cross bins in whole design for
1702 +; all Covergroups.
1703 +; MaxSVCrossBinsDesign = 2147483648
1704 +
1705 +; Specify maximum number of Cross bins in any instance of a Covergroup, default is 2^16 bins
1706 +; MaxSVCrossBinsInst = 67108864
1707 +
1708 +; Specify whether vsim will collect the coverage data of zero-weight coverage items or not.
1709 +; By default, this variable is set 0, in which case option.no_collect setting will take effect.
1710 +; If this variable is set to 1, all zero-weight coverage items will not be saved.
1711 +; Note that the usage of vsim switch -cvgzwnocollect, if present, will override the setting
1712 +; of this variable.
1713 +; CvgZWNoCollect = 1
1714 +
1715 +; Specify a space delimited list of double quoted TCL style
1716 +; regular expressions which will be matched against the text of all messages.
1717 +; If any regular expression is found to be contained within any message, the
1718 +; status for that message will not be propagated to the UCDB TESTSTATUS.
1719 +; If no match is detected, then the status will be propagated to the
1720 +; UCDB TESTSTATUS. More than one such regular expression text is allowed,
1721 +; and each message text is compared for each regular expression in the list.
1722 +; UCDBTestStatusMessageFilter = "Done with Test Bench" "Ignore .* message"
1723 +
1724 +; Set weight for all PSL/SVA cover directives. Default is 1.
1725 +; CoverWeight = 2
1726 +
1727 +; Check vsim plusargs. Default is 0 (off).
1728 +; 0 = Don't check plusargs
1729 +; 1 = Warning on unrecognized plusarg
1730 +; 2 = Error and exit on unrecognized plusarg
1731 +; CheckPlusargs = 1
1732 +
1733 +; Load the specified shared objects with the RTLD_GLOBAL flag.
1734 +; This gives global visibility to all symbols in the shared objects,
1735 +; meaning that subsequently loaded shared objects can bind to symbols
1736 +; in the global shared objects. The list of shared objects should
1737 +; be whitespace delimited. This option is not supported on the
1738 +; Windows or AIX platforms.
1739 +; GlobalSharedObjectList = example1.so example2.so example3.so
1740 +
1741 +; Generate the stub definitions for the undefined symbols in the shared libraries being
1742 +; loaded in the simulation. When this flow is turned on, the undefined symbols will not
1743 +; prevent vsim from loading. Calling undefined symbols at runtime will cause fatal error.
1744 +; The valid arguments are: on, off, verbose.
1745 +; on : turn on the automatic generation of stub definitions.
1746 +; off: turn off the flow. The undefined symbols will trigger an immediate load failure.
1747 +; verbose: Turn on the flow and report the undefined symbols for each shared library.
1748 +; NOTE: This variable can be overriden with vsim switch "-undefsyms".
1749 +; The default is off.
1750 +;
1751 +; UndefSyms = on
1752 +
1753 +; Initial seed for the random number generator of the root thread (SystemVerilog).
1754 +; NOTE: This variable can be overridden with the vsim "-sv_seed" command line switch.
1755 +; The default value is 0.
1756 +; Sv_Seed = 0
1757 +
1758 +; Specify the solver "engine" that vsim will select for constrained random
1759 +; generation.
1760 +; Valid values are:
1761 +; "auto" - automatically select the best engine for the current
1762 +; constraint scenario
1763 +; "bdd" - evaluate all constraint scenarios using the BDD solver engine
1764 +; "act" - evaluate all constraint scenarios using the ACT solver engine
1765 +; While the BDD solver engine is generally efficient with constraint scenarios
1766 +; involving bitwise logical relationships, the ACT solver engine can exhibit
1767 +; superior performance with constraint scenarios involving large numbers of
1768 +; random variables related via arithmetic operators (+, *, etc).
1769 +; NOTE: This variable can be overridden with the vsim "-solveengine" command
1770 +; line switch.
1771 +; The default value is "auto".
1772 +; SolveEngine = auto
1773 +
1774 +; Specify if the solver should attempt to ignore overflow/underflow semantics
1775 +; for arithmetic constraints (multiply, addition, subtraction) in order to
1776 +; improve performance. The "solveignoreoverflow" attribute can be specified on
1777 +; a per-call basis to randomize() to override this setting.
1778 +; The default value is 0 (overflow/underflow is not ignored). Set to 1 to
1779 +; ignore overflow/underflow.
1780 +; SolveIgnoreOverflow = 0
1781 +
1782 +; Specifies the maximum size that a dynamic array may be resized to by the
1783 +; solver. If the solver attempts to resize a dynamic array to a size greater
1784 +; than the specified limit, the solver will abort with an error.
1785 +; The default value is 10000. A value of 0 indicates no limit.
1786 +; SolveArrayResizeMax = 10000
1787 +
1788 +; Error message severity when randomize() failure is detected (SystemVerilog).
1789 +; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal
1790 +; The default is 0 (no error).
1791 +; SolveFailSeverity = 0
1792 +
1793 +; Error message severity for suppressible errors that are detected in a
1794 +; solve/before constraint.
1795 +; NOTE: This variable can be overridden with the vsim "-solvebeforeerrorseverity"
1796 +; command line switch.
1797 +; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal
1798 +; The default is 3 (failure).
1799 +; SolveBeforeErrorSeverity = 3
1800 +
1801 +; Enable/disable debug information for randomize() failures.
1802 +; NOTE: This variable can be overridden with the vsim "-solvefaildebug" command
1803 +; line switch.
1804 +; The default is 0 (disabled). Set to 1 to enable basic debug (with no
1805 +; performance penalty). Set to 2 for enhanced debug (will result in slower
1806 +; runtime performance).
1807 +; SolveFailDebug = 0
1808 +
1809 +; Upon encountering a randomize() failure, generate a simplified testcase that
1810 +; will reproduce the failure. Optionally output the testcase to a file.
1811 +; Testcases for 'no-solution' failures will only be produced if SolveFailDebug
1812 +; is enabled (see above).
1813 +; NOTE: This variable can be overridden with the vsim "-solvefailtestcase"
1814 +; command line switch.
1815 +; The default is OFF (do not generate a testcase). To enable testcase
1816 +; generation, uncomment this variable. To redirect testcase generation to a
1817 +; file, specify the name of the output file.
1818 +; SolveFailTestcase =
1819 +
1820 +; Specify solver timeout threshold (in seconds). randomize() will fail if the
1821 +; CPU time required to evaluate any randset exceeds the specified timeout.
1822 +; The default value is 500. A value of 0 will disable timeout failures.
1823 +; SolveTimeout = 500
1824 +
1825 +; Specify the maximum size of the solution graph generated by the BDD solver.
1826 +; This value can be used to force the BDD solver to abort the evaluation of a
1827 +; complex constraint scenario that cannot be evaluated with finite memory.
1828 +; This value is specified in 1000s of nodes.
1829 +; The default value is 10000. A value of 0 indicates no limit.
1830 +; SolveGraphMaxSize = 10000
1831 +
1832 +; Specify the maximum number of evaluations that may be performed on the
1833 +; solution graph by the BDD solver. This value can be used to force the BDD
1834 +; solver to abort the evaluation of a complex constraint scenario that cannot
1835 +; be evaluated in finite time. This value is specified in 10000s of evaluations.
1836 +; The default value is 10000. A value of 0 indicates no limit.
1837 +; SolveGraphMaxEval = 10000
1838 +
1839 +; Specify the maximum number of tests that the ACT solver may evaluate before
1840 +; abandoning an attempt to solve a particular constraint scenario.
1841 +; The default value is 2000000. A value of 0 indicates no limit.
1842 +; SolveACTMaxTests = 2000000
1843 +
1844 +; Specify the maximum number of operations that the ACT solver may perform
1845 +; before abandoning an attempt to solve a particular constraint scenario. The
1846 +; value is specified in 1000000s of operations.
1847 +; The default value is 10000. A value of 0 indicates no limit.
1848 +; SolveACTMaxOps = 10000
1849 +
1850 +; Specify the number of times the ACT solver will retry to evaluate a constraint
1851 +; scenario that fails due to the SolveACTMax[Tests|Ops] threshold.
1852 +; The default value is 0 (no retry).
1853 +; SolveACTRetryCount = 0
1854 +
1855 +; Specify random sequence compatiblity with a prior letter release. This
1856 +; option is used to get the same random sequences during simulation as
1857 +; as a prior letter release. Only prior letter releases (of the current
1858 +; number release) are allowed.
1859 +; NOTE: Only those random sequence changes due to solver optimizations are
1860 +; reverted by this variable. Random sequence changes due to solver bugfixes
1861 +; cannot be un-done.
1862 +; NOTE: This variable can be overridden with the vsim "-solverev" command
1863 +; line switch.
1864 +; Default value set to "" (no compatibility).
1865 +; SolveRev =
1866 +
1867 +; Environment variable expansion of command line arguments has been depricated
1868 +; in favor shell level expansion. Universal environment variable expansion
1869 +; inside -f files is support and continued support for MGC Location Maps provide
1870 +; alternative methods for handling flexible pathnames.
1871 +; The following line may be uncommented and the value set to 1 to re-enable this
1872 +; deprecated behavior. The default value is 0.
1873 +; DeprecatedEnvironmentVariableExpansion = 0
1874 +
1875 +; Specify the memory threshold for the System Verilog garbage collector.
1876 +; The value is the number of megabytes of class objects that must accumulate
1877 +; before the garbage collector is run.
1878 +; The GCThreshold setting is used when class debug mode is disabled to allow
1879 +; less frequent garbage collection and better simulation performance.
1880 +; The GCThresholdClassDebug setting is used when class debug mode is enabled
1881 +; to allow for more frequent garbage collection.
1882 +; GCThreshold = 100
1883 +; GCThresholdClassDebug = 5
1884 +
1885 +; Turn on/off collapsing of bus ports in VCD dumpports output
1886 +DumpportsCollapse = 1
1887 +
1888 +; Location of Multi-Level Verification Component (MVC) installation.
1889 +; The default location is the product installation directory.
1890 +MvcHome = $MODEL_TECH/..
1891 +
1892 +; Location of InFact installation. The default is $MODEL_TECH/../../infact
1893 +;
1894 +; InFactHome = $MODEL_TECH/../../infact
1895 +
1896 +; Initialize SystemVerilog enums using the base type's default value
1897 +; instead of the leftmost value.
1898 +; EnumBaseInit = 1
1899 +
1900 +; Suppress file type registration.
1901 +; SuppressFileTypeReg = 1
1902 +
1903 +; Controls SystemVerilog Language Extensions. These options enable
1904 +; some non-LRM compliant behavior. Valid extensions are "cfce",
1905 +; SvExtensions = cfce
1906 +
1907 +; Controls the formatting of '%p' and '%P' conversion specification, used in $display
1908 +; and similar system tasks.
1909 +; 1. SVPrettyPrintFlags=I<n><S|T> use <n> spaces(S) or tabs(T) per indentation level.
1910 +; The 'I' flag when present causes relevant data types to be expanded and indented into
1911 +; a more readable format.
1912 +; (e.g. SVPrettyPrintFlags=I4S will cause 4 spaces to be used per indentation level).
1913 +; 2. SVPrettyPrintFlags=L<numLines> limits the output to <numLines> lines.
1914 +; (e.g. SVPrettyPrintFlags=L20 will limit the output to 20 lines).
1915 +; 3. SVPrettyPrintFlags=C<numChars> limits the output to <numChars> characters.
1916 +; (e.g. SVPrettyPrintFlags=C256 will limit the output to 256 characters).
1917 +; 4. SVPrettyPrintFlags=F<numFields> limits the output to <numFields> of relevant datatypes
1918 +; (e.g. SVPrettyPrintFlags=F4 will limit the output to 4 fields of a structure).
1919 +; 5. SVPrettyPrintFlags=E<numElements> limits the output to <numElements> of relevant datatypes
1920 +; (e.g. SVPrettyPrintFlags=E50 will limit the output to 50 elements of an array).
1921 +; 6. SVPrettyPrintFlags=D<depth> suppresses the output of sub-elements below <depth>.
1922 +; (e.g. SVPrettyPrintFlags=D5 will suppresses the output of sub elements below a depth of 5).
1923 +; 7. Items 1-6 above can be combined as a comma separated list.
1924 +; (e.g. SVPrettyPrintFlags=I4S,L20,C256,F4,E50,D5)
1925 +; SVPrettyPrintFlags=I4S
1926 +
1927 +[lmc]
1928 +; The simulator's interface to Logic Modeling's SmartModel SWIFT software
1929 +libsm = $MODEL_TECH/libsm.sl
1930 +; The simulator's interface to Logic Modeling's SmartModel SWIFT software (Windows NT)
1931 +; libsm = $MODEL_TECH/libsm.dll
1932 +; Logic Modeling's SmartModel SWIFT software (HP 9000 Series 700)
1933 +; libswift = $LMC_HOME/lib/hp700.lib/libswift.sl
1934 +; Logic Modeling's SmartModel SWIFT software (IBM RISC System/6000)
1935 +; libswift = $LMC_HOME/lib/ibmrs.lib/swift.o
1936 +; Logic Modeling's SmartModel SWIFT software (Sun4 Solaris)
1937 +; libswift = $LMC_HOME/lib/sun4Solaris.lib/libswift.so
1938 +; Logic Modeling's SmartModel SWIFT software (Windows NT)
1939 +; libswift = $LMC_HOME/lib/pcnt.lib/libswift.dll
1940 +; Logic Modeling's SmartModel SWIFT software (non-Enterprise versions of Linux)
1941 +; libswift = $LMC_HOME/lib/x86_linux.lib/libswift.so
1942 +; Logic Modeling's SmartModel SWIFT software (Enterprise versions of Linux)
1943 +; libswift = $LMC_HOME/lib/linux.lib/libswift.so
1944 +
1945 +; The simulator's interface to Logic Modeling's hardware modeler SFI software
1946 +libhm = $MODEL_TECH/libhm.sl
1947 +; The simulator's interface to Logic Modeling's hardware modeler SFI software (Windows NT)
1948 +; libhm = $MODEL_TECH/libhm.dll
1949 +; Logic Modeling's hardware modeler SFI software (HP 9000 Series 700)
1950 +; libsfi = <sfi_dir>/lib/hp700/libsfi.sl
1951 +; Logic Modeling's hardware modeler SFI software (IBM RISC System/6000)
1952 +; libsfi = <sfi_dir>/lib/rs6000/libsfi.a
1953 +; Logic Modeling's hardware modeler SFI software (Sun4 Solaris)
1954 +; libsfi = <sfi_dir>/lib/sun4.solaris/libsfi.so
1955 +; Logic Modeling's hardware modeler SFI software (Windows NT)
1956 +; libsfi = <sfi_dir>/lib/pcnt/lm_sfi.dll
1957 +; Logic Modeling's hardware modeler SFI software (Linux)
1958 +; libsfi = <sfi_dir>/lib/linux/libsfi.so
1959 +
1960 +[msg_system]
1961 +; Change a message severity or suppress a message.
1962 +; The format is: <msg directive> = <msg number>[,<msg number>...]
1963 +; suppress can be used to achieve +nowarn<CODE> functionality
1964 +; The format is: suppress = <CODE>,<msg number>,[<CODE>,<msg number>,...]
1965 +; Examples:
1966 +suppress = 8780 ;an explanation can be had by running: verror 8780
1967 +; note = 3009
1968 +; warning = 3033
1969 +; error = 3010,3016
1970 +; fatal = 3016,3033
1971 +; suppress = 3009,3016,3601
1972 +; suppress = 3009,CNNODP,3601,TFMPC
1973 +; suppress = 8683,8684
1974 +; The command verror <msg number> can be used to get the complete
1975 +; description of a message.
1976 +
1977 +; Control transcripting of Verilog display system task messages and
1978 +; PLI/FLI print function call messages. The system tasks include
1979 +; $display[bho], $strobe[bho], $monitor[bho], and $write[bho]. They
1980 +; also include the analogous file I/O tasks that write to STDOUT
1981 +; (i.e. $fwrite or $fdisplay). The PLI/FLI calls include io_printf,
1982 +; vpi_printf, mti_PrintMessage, and mti_PrintFormatted. The default
1983 +; is to have messages appear only in the transcript. The other
1984 +; settings are to send messages to the wlf file only (messages that
1985 +; are recorded in the wlf file can be viewed in the MsgViewer) or
1986 +; to both the transcript and the wlf file. The valid values are
1987 +; tran {transcript only (default)}
1988 +; wlf {wlf file only}
1989 +; both {transcript and wlf file}
1990 +; displaymsgmode = tran
1991 +
1992 +; Control transcripting of elaboration/runtime messages not
1993 +; addressed by the displaymsgmode setting. The default is to
1994 +; have messages appear only in the transcript. The other settings
1995 +; are to send messages to the wlf file only (messages that are
1996 +; recorded in the wlf file can be viewed in the MsgViewer) or to both
1997 +; the transcript and the wlf file. The valid values are
1998 +; tran {transcript only (default)}
1999 +; wlf {wlf file only}
2000 +; both {transcript and wlf file}
2001 +; msgmode = tran
2002 +
2003 +; Controls number of displays of a particluar message
2004 +; default value is 5
2005 +; MsgLimitCount = 5
2006 +
2007 +[utils]
2008 +; Default Library Type (while creating a library with "vlib")
2009 +; 0 - legacy library using subdirectories for design units
2010 +; 2 - flat library
2011 +; DefaultLibType = 2
2012 +
2013 +; Flat Library Page Size (while creating a library with "vlib")
2014 +; Set the size in bytes for flat library file pages. Libraries containing
2015 +; very large files may benefit from a larger value.
2016 +; FlatLibPageSize = 8192
2017 +
2018 +; Flat Library Page Cleanup Percentage (while creating a library with "vlib")
2019 +; Set the percentage of total pages deleted before library cleanup can occur.
2020 +; This setting is applied together with FlatLibPageDeleteThreshold.
2021 +; FlatLibPageDeletePercentage = 50
2022 +
2023 +; Flat Library Page Cleanup Threshold (while creating a library with "vlib")
2024 +; Set the number of pages deleted before library cleanup can occur.
2025 +; This setting is applied together with FlatLibPageDeletePercentage.
2026 +; FlatLibPageDeleteThreshold = 1000
2027 +
2028 +[Project]
2029 +; Warning -- Do not edit the project properties directly.
2030 +; Property names are dynamic in nature and property
2031 +; values have special syntax. Changing property data directly
2032 +; can result in a corrupt MPF file. All project properties
2033 +; can be modified through project window dialogs.
2034 +Project_Version = 6
2035 +Project_DefaultLib = work
2036 +Project_SortMethod = unused
2037 +Project_Files_Count = 13
2038 +Project_File_0 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
2039 +Project_File_P_0 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589625001 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 12 cover_expr 0 dont_compile 0 cover_stmt 0
2040 +Project_File_1 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
2041 +Project_File_P_1 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589585757 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 0 cover_expr 0 dont_compile 0 cover_stmt 0
2042 +Project_File_2 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
2043 +Project_File_P_2 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589586199 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 10 cover_expr 0 dont_compile 0 cover_stmt 0
2044 +Project_File_3 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
2045 +Project_File_P_3 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589611047 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 2 cover_expr 0 dont_compile 0 cover_stmt 0
2046 +Project_File_4 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
2047 +Project_File_P_4 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} last_compile 1589714789 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 6 dont_compile 0 cover_expr 0 cover_stmt 0
2048 +Project_File_5 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
2049 +Project_File_P_5 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589586193 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 9 cover_expr 0 dont_compile 0 cover_stmt 0
2050 +Project_File_6 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
2051 +Project_File_P_6 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589610276 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 11 cover_expr 0 dont_compile 0 cover_stmt 0
2052 +Project_File_7 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
2053 +Project_File_P_7 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589611718 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 4 cover_expr 0 dont_compile 0 cover_stmt 0
2054 +Project_File_8 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
2055 +Project_File_P_8 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589611061 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 1 cover_expr 0 dont_compile 0 cover_stmt 0
2056 +Project_File_9 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
2057 +Project_File_P_9 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589610975 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 7 cover_expr 0 dont_compile 0 cover_stmt 0
2058 +Project_File_10 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v
2059 +Project_File_P_10 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589611018 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 5 cover_expr 0 dont_compile 0 cover_stmt 0
2060 +Project_File_11 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
2061 +Project_File_P_11 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589585780 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 3 cover_expr 0 dont_compile 0 cover_stmt 0
2062 +Project_File_12 = D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
2063 +Project_File_P_12 = cover_toggle 0 vlog_protect 0 file_type verilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat 0 vlog_nodebug 0 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1589611738 vlog_noload 0 cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 8 cover_expr 0 dont_compile 0 cover_stmt 0
2064 +Project_Sim_Count = 0
2065 +Project_Folder_Count = 0
2066 +Echo_Compile_Output = 0
2067 +Save_Compile_Report = 1
2068 +Project_Opt_Count = 0
2069 +ForceSoftPaths = 0
2070 +ProjectStatusDelay = 5000
2071 +VERILOG_DoubleClick = Edit
2072 +VERILOG_CustomDoubleClick =
2073 +SYSTEMVERILOG_DoubleClick = Edit
2074 +SYSTEMVERILOG_CustomDoubleClick =
2075 +VHDL_DoubleClick = Edit
2076 +VHDL_CustomDoubleClick =
2077 +PSL_DoubleClick = Edit
2078 +PSL_CustomDoubleClick =
2079 +TEXT_DoubleClick = Edit
2080 +TEXT_CustomDoubleClick =
2081 +SYSTEMC_DoubleClick = Edit
2082 +SYSTEMC_CustomDoubleClick =
2083 +TCL_DoubleClick = Edit
2084 +TCL_CustomDoubleClick =
2085 +MACRO_DoubleClick = Edit
2086 +MACRO_CustomDoubleClick =
2087 +VCD_DoubleClick = Edit
2088 +VCD_CustomDoubleClick =
2089 +SDF_DoubleClick = Edit
2090 +SDF_CustomDoubleClick =
2091 +XML_DoubleClick = Edit
2092 +XML_CustomDoubleClick =
2093 +LOGFILE_DoubleClick = Edit
2094 +LOGFILE_CustomDoubleClick =
2095 +UCDB_DoubleClick = Edit
2096 +UCDB_CustomDoubleClick =
2097 +TDB_DoubleClick = Edit
2098 +TDB_CustomDoubleClick =
2099 +UPF_DoubleClick = Edit
2100 +UPF_CustomDoubleClick =
2101 +PCF_DoubleClick = Edit
2102 +PCF_CustomDoubleClick =
2103 +PROJECT_DoubleClick = Edit
2104 +PROJECT_CustomDoubleClick =
2105 +VRM_DoubleClick = Edit
2106 +VRM_CustomDoubleClick =
2107 +DEBUGDATABASE_DoubleClick = Edit
2108 +DEBUGDATABASE_CustomDoubleClick =
2109 +DEBUGARCHIVE_DoubleClick = Edit
2110 +DEBUGARCHIVE_CustomDoubleClick =
2111 +Project_Major_Version = 10
2112 +Project_Minor_Version = 4
1 +module Mux32bit(muxin1, muxin2, signal, muxout);
2 +
3 +input[31:0] muxin1, muxin2;
4 +input signal;
5 +output reg[31:0] muxout;
6 +
7 +always @(*) begin
8 +case(signal)
9 + 1'b0: muxout = muxin1;
10 + 1'b1: muxout = muxin2;
11 +endcase
12 +end
13 +
14 +endmodule
15 +
16 +module Mux5bit(muxin1, muxin2, signal, muxout);
17 +
18 +input[4:0] muxin1, muxin2;
19 +input signal;
20 +output reg[4:0] muxout;
21 +
22 +always @(*) begin
23 +case(signal)
24 + 1'b0: muxout = muxin1;
25 + 1'b1: muxout = muxin2;
26 +endcase
27 +end
28 +
29 +endmodule
1 +module Register(readin1, readin2, writein, writedata, regwrite, regout1, regout2);
2 +
3 +input[4:0] readin1, readin2, writein;
4 +input[31:0] writedata;
5 +input regwrite;
6 +output[31:0] regout1, regout2;
7 +
8 +integer i;
9 +reg[31:0] register[31:0];
10 +
11 +assign regout1 = register[readin1];
12 +assign regout2 = register[readin2];
13 +
14 +initial begin
15 + for(i=0; i<32; i=i+1) register[i] = 32'd0;
16 +end
17 +
18 +always @(*) begin
19 + if(regwrite == 1'b1 && writein != 5'd0) begin
20 + register[writein] = writedata;
21 + end
22 +end
23 +
24 +endmodule
1 +module ShiftLeft2(shiftinput, shiftoutput);
2 +
3 +input[31:0] shiftinput;
4 +output[31:0] shiftoutput;
5 +
6 +assign shiftoutput = {shiftinput[29:0], 2'b00};
7 +
8 +endmodule
1 +module SignExtend(signedinput, signedoutput);
2 +
3 +input[15:0] signedinput;
4 +output[31:0] signedoutput;
5 +
6 +assign signedoutput = {{16{signedinput[15]}},signedinput};
7 +
8 +endmodule
1 +module Clock(clk);
2 +
3 +output reg clk;
4 +
5 +initial clk = 0;
6 +always #50 clk = ~clk;
7 +
8 +endmodule
9 +
1 +module test;
2 +
3 +reg[31:0] in1, in2;
4 +reg[3:0] ctrl;
5 +wire[31:0] out;
6 +wire a;
7 +
8 +ALU alu(in1, in2, ctrl, out, a);
9 +
10 +initial begin
11 + in1 = 32'd128;
12 + in2 = 32'd982;
13 + ctrl = 4'b1000;
14 + #100;
15 + in1 = 32'd123;
16 + in2 = 32'd246;
17 + ctrl = 4'b0010;
18 + #100;
19 + ctrl = 4'b1010;
20 + #100;
21 + ctrl = 4'b1011;
22 + #100;
23 +end
24 +
25 +/*
26 +wire clk;
27 +
28 +Clock clock(clk);
29 +*/
30 +
31 +/*
32 +reg[31:0] address, wdata;
33 +reg mr, mw;
34 +wire[31:0] rdata;
35 +
36 +DataMemory damem(address, wdata, mr, mw, rdata);
37 +
38 +initial begin
39 + address = 32'd0;
40 + wdata = 32'd127;
41 + mr = 1'b0;
42 + mw = 1'b1;
43 + #100;
44 + address = 32'd48;
45 + wdata = 32'd255;
46 + mr = 1'b0;
47 + mw = 1'b1;
48 + #100;
49 + address = 32'd48;
50 + wdata = 32'd255;
51 + mr = 1'b1;
52 + mw = 1'b0;
53 + #100;
54 + address = 32'd48;
55 + wdata = 32'd4;
56 + mr = 1'b0;
57 + mw = 1'b1;
58 + #100;
59 +end
60 +*/
61 +
62 +/*
63 +wire[31:0] regout1, regout2;
64 +reg[4:0] ins1, ins2, ins3;
65 +wire[31:0] aluresult;
66 +reg[3:0] aluctrl;
67 +reg rwrite;
68 +reg[31:0] aluin2;
69 +
70 +Register Regi(ins1, ins2, ins3, aluresult, rwrite, regout1, regout2);
71 +ALU alu(regout1, aluin2, aluctrl, aluresult);
72 +
73 +initial begin
74 + rwrite = 1;
75 + ins1 = 5'd0;
76 + ins2 = 5'd29;
77 + ins3 = 5'd7;
78 + aluin2 = 32'h7fffffff;
79 + aluctrl = 4'b0010;
80 + #100;
81 + rwrite = 1;
82 + ins1 = 5'd7;
83 + ins2 = 5'd7;
84 + ins3 = 5'd8;
85 + aluctrl = 4'b0010;
86 + #100;
87 + rwrite = 0;
88 + #100;
89 + rwrite = 1;
90 + ins1 = 5'd0;
91 + ins2 = 5'd29;
92 + ins3 = 5'd7;
93 + aluin2 = 32'h7fffffff;
94 + aluctrl = 4'b0010;
95 + #100;
96 + rwrite = 1;
97 + ins1 = 5'd7;
98 + ins2 = 5'd7;
99 + ins3 = 5'd8;
100 + aluctrl = 4'b0010;
101 + #100;
102 +end
103 +*/
104 +
105 +/*
106 +reg[31:0] input1, input2;
107 +reg[3:0] ctrl;
108 +wire[31:0] output1;
109 +wire zero;
110 +
111 +ALU testalu(input1, input2, ctrl, output1, zero);
112 +
113 +initial begin
114 + input1 <= 32'h0000000f;
115 + input2 <= 32'h000000f0;
116 + ctrl <= 4'h0; // add
117 + #100;
118 + ctrl <= 4'h1; // or
119 + #100;
120 + ctrl <= 4'h2; // add
121 + #100;
122 + ctrl <= 4'h6; // sub
123 + #100;
124 + ctrl <= 4'h7; // slt
125 + #100;
126 + ctrl <= 4'hc; // nor
127 + #100;
128 + input1 <= 32'h000000f0;
129 + input2 <= 32'h0000000f;
130 + ctrl <= 4'h6; // sub
131 + #100;
132 + input1 <= 32'h000000f0;
133 + input2 <= 32'h0000000f;
134 + ctrl <= 4'h6; // sub
135 + #100;
136 + input1 <= 32'h000000f0;
137 + input2 <= 32'h0000000f;
138 + ctrl <= 4'h6; // sub
139 + #100;
140 + input1 <= 32'h000000f0;
141 + input2 <= 32'h0000000f;
142 + ctrl <= 4'h6; // sub
143 + #100;
144 +end
145 +*/
146 +
147 +/*
148 +reg[31:0] input1;
149 +wire[31:0] output1;
150 +
151 +InstructionMemory im(input1, output1);
152 +
153 +initial
154 +begin
155 + input1 = {{28{1'b0}}, 4'b0000};
156 + #100;
157 + input1 = {{28{1'b0}}, 4'b1100};
158 + #100;
159 + input1 = {{28{1'b0}}, 4'b1000};
160 + #100;
161 + input1 = {{28{1'b0}}, 4'b0100};
162 + #100;
163 + input1 = {{28{1'b0}}, 4'b0000};
164 + #100;
165 +end
166 +*/
167 +
168 +/*
169 +reg[7:0] input1;
170 +wire[7:0] output1;
171 +
172 +Adder adder1(input1, 8'b00000001, output1);
173 +
174 +initial
175 +begin
176 + input1 = 8'b00001111;
177 + #100;
178 + input1 = 8'b00001000;
179 + #100;
180 + input1 = 8'b00000000;
181 + #100;
182 + input1 = 8'b11111111;
183 + #100;
184 +end
185 +*/
186 +endmodule
1 +module testbench;
2 +/*
3 +wire clk; // clock
4 +reg[31:0] PC; // program counter
5 +reg[31:0] instr_address;
6 +wire[31:0] addPC4, addPCbranch, tempPC1, nextPC;
7 +
8 +wire[31:0] instr; // loaded instruction.
9 +
10 +wire[4:0] reg_writereg1; // register number for the write data.
11 +wire[31:0] reg_writedata; // data that will be written in the register.
12 +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register.
13 +
14 +wire[31:0] alu_input2; // input data of ALU.
15 +wire[31:0] alu_result; // result data of ALU.
16 +wire alu_branch; // indicator for branch operation.
17 +
18 +wire[31:0] mem_readdata; // data from the requested address.
19 +
20 +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump;
21 +wire[1:0] ctrl_aluop; // control signals.
22 +
23 +wire[3:0] aluctrl; // alu control signal.
24 +
25 +wire[31:0] extend_output;
26 +
27 +wire[31:0] shiftBranch_output;
28 +wire[31:0] shiftJump_output;
29 +
30 +Clock clock(clk);
31 +InstructionMemory instrmem(instr_address, instr);
32 +Register register(instr[25:21], instr[20:16], reg_writereg1, reg_writedata, ctrl_regwrite, reg_readdata1, reg_readdata2);
33 +ALU alu(reg_readdata1, alu_input2, aluctrl, alu_result, alu_branch);
34 +DataMemory datamem(alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata);
35 +Control ctrl(instr[31:26], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluop, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump);
36 +ALUControl ALUctrl(instr[5:0], ctrl_aluop, aluctrl);
37 +Mux5bit mux_writereg(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1);
38 +Mux32bit mux_alu(reg_readdata2, extend_output, ctrl_alusrc, alu_input2);
39 +Mux32bit mux_writedata(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata);
40 +Mux32bit mux_branch(addPC4, addPCbranch, {ctrl_branch&alu_branch} , tempPC1);
41 +Mux32bit mux_jump(tempPC1, {addPC4[31:28], shiftJump_output[27:0]}, ctrl_jump, nextPC);
42 +SignExtend extend(instr[15:0], extend_output);
43 +Adder add_pc4(PC, 32'h00000004, addPC4);
44 +Adder add_branch(addPC4, shiftBranch_output, addPCbranch);
45 +ShiftLeft2 shiftBranch(extend_output, shiftBranch_output);
46 +ShiftLeft2 shiftJump({6'b000000, instr[25:0]}, shiftJump_output);
47 +
48 +initial begin
49 + PC = 32'h00000000;
50 +end
51 +
52 +always @(posedge clk) begin
53 + case(nextPC[31]) // if nextPC is available, PC = nextPC.
54 + 1'b0: PC = nextPC;
55 + 1'b1: PC = nextPC;
56 + endcase
57 +
58 + instr_address = PC;
59 +end
60 +*/
61 +
62 +wire clk; // clock
63 +reg[31:0] PC, nextPC; // program counter
64 +
65 +// Instruction Memory (IM)
66 +reg[31:0] address; // instruction address. input of IM.
67 +wire[31:0] instr; // loaded instruction. output of IM
68 +
69 +// Register
70 +reg[4:0] reg_readreg1, reg_readreg2; // register numbers of the read data. input of register.
71 +reg[4:0] reg_writereg1; // register number for the write data. input of register.
72 +reg[31:0] reg_writedata; // data that will be written in the register. input of register.
73 +reg reg_sig_regwrite; // regwrite control signal. input of register
74 +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register. outputs of register.
75 +
76 +// ALU
77 +reg[31:0] alu_input1, alu_input2; // input data of ALU. inputs of ALU.
78 +reg[3:0] alu_control; // ALU control signal. input of ALU.
79 +wire[31:0] alu_result; // result data of ALU. output of ALU.
80 +wire alu_branch; // indicator for branch operation. output of ALU.
81 +
82 +//Data Memory (DM)
83 +reg[31:0] mem_addr; // address of the read data. input of DM.
84 +reg[31:0] mem_writedata; // data that will be written in the memory. input of DM.
85 +reg mem_memread, mem_memwrite; // control signals for DM. input of DM.
86 +wire[31:0] mem_readdata; // data from the requested address. output of DM.
87 +
88 +// Control Unit
89 +reg[5:0] ctrl_opcode; // opcode of the instruction. input of control unit.
90 +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread; // ??
91 +wire ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump; // ??? control signals outputs of control unit.
92 +wire[1:0] ctrl_aluop; // ??
93 +
94 +// ALU Control Unit
95 +reg[5:0] aluctrl_funct; // function code of the R type instructions. input of ALU control unit.
96 +reg[1:0] aluctrl_aluop; // aluop signal. input of ALU control unit.
97 +wire[3:0] aluctrl_sig; // alu control signal. output of ALU control unit.
98 +
99 +// Multiplexer (Mux)
100 + // mux_writereg Mux for Write Register.
101 +reg[4:0] mux_writereg_input1, mux_writereg_input2;
102 +reg mux_writereg_signal;
103 +wire[4:0] mux_writereg_output;
104 + // mux_alu Mux for ALU input 2.
105 +reg[31:0] mux_alu_input1, mux_alu_input2;
106 +reg mux_alu_signal;
107 +wire[31:0] mux_alu_output;
108 + // mux_writedata Mux for Write Data of Register.
109 +reg[31:0] mux_writedata_input1, mux_writedata_input2;
110 +reg mux_writedata_signal;
111 +wire[31:0] mux_writedata_output;
112 + // mux_branch Mux for Branch
113 +reg[31:0] mux_branch_input1, mux_branch_input2;
114 +reg mux_branch_signal;
115 +wire[31:0] mux_branch_output;
116 + // mux_jump Mux for Jump
117 +reg[31:0] mux_jump_input1, mux_jump_input2;
118 +reg mux_jump_signal;
119 +wire[31:0] mux_jump_output;
120 +
121 +// Sign Extend
122 +reg[15:0] extend_input;
123 +wire[31:0] extend_output;
124 +
125 +// Adder
126 + // add_pc4
127 +reg[31:0] add_pc4_input; // input2 is 4.
128 +wire[31:0] add_pc4_output;
129 + // add_branch
130 +reg[31:0] add_branch_input1, add_branch_input2;
131 +wire[31:0] add_branch_output;
132 +
133 +// Shift Left 2
134 + // shiftBranch ShiftLeft2 which is used for Branch instructions.
135 +reg[31:0] shiftBranch_input;
136 +wire[31:0] shiftBranch_output;
137 + // shiftJump ShiftLeft2 which is used for Jump instructions.
138 +reg[31:0] shiftJump_input;
139 +wire[31:0] shiftJump_output;
140 +
141 +
142 +Clock clock(clk);
143 +InstructionMemory instrmem(address, instr);
144 +Register register(reg_readreg1, reg_readreg2, reg_writereg1, reg_writedata, reg_sig_regwrite, reg_readdata1, reg_readdata2);
145 +ALU alu(alu_input1, alu_input2, alu_control, alu_result, alu_branch);
146 +DataMemory datamem(mem_addr, mem_writedata, mem_memread, mem_memwrite, mem_readdata);
147 +Control ctrl(ctrl_opcode, ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluop, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump);
148 +ALUControl aluctrl(aluctrl_funct, aluctrl_aluop, aluctrl_sig);
149 +Mux5bit mux_writereg(mux_writereg_input1, mux_writereg_input2, mux_writereg_signal, mux_writereg_output);
150 +Mux32bit mux_alu(mux_alu_input1, mux_alu_input2, mux_alu_signal, mux_alu_output);
151 +Mux32bit mux_writedata(mux_writedata_input1, mux_writedata_input2, mux_writedata_signal, mux_writedata_output);
152 +Mux32bit mux_branch(mux_branch_input1, mux_branch_input2, mux_branch_signal, mux_branch_output);
153 +Mux32bit mux_jump(mux_jump_input1, mux_jump_input2, mux_jump_signal, mux_jump_output);
154 +SignExtend extend(extend_input, extend_output);
155 +Adder add_pc4(add_pc4_input, 32'h00000004, add_pc4_output);
156 +Adder add_branch(add_branch_input1, add_branch_input2, add_branch_output);
157 +ShiftLeft2 shiftBranch(shiftBranch_input, shiftBranch_output);
158 +ShiftLeft2 shiftJump(shiftJump_input, shiftJump_output);
159 +
160 +initial begin
161 + PC = 32'h00000000;
162 + nextPC = 32'h00000000;
163 +end
164 +
165 +always @(posedge clk) begin
166 +// IF
167 + case(nextPC[0])
168 + 1'b0: PC = nextPC;
169 + 1'b1: PC = nextPC;
170 + endcase
171 +#1;
172 + address = PC;
173 + add_pc4_input = PC;
174 +#1;
175 +// ID
176 + ctrl_opcode <= instr[31:26];
177 + reg_readreg1 <= instr[25:21];
178 + reg_readreg2 <= instr[20:16];
179 + mux_writereg_input1 <= instr[20:16];
180 + mux_writereg_input2 <= instr[15:11];
181 + extend_input <= instr[15:0];
182 + aluctrl_funct <= instr[5:0];
183 + shiftJump_input <= {6'b000000, instr[25:0]};
184 +#1;
185 + mux_writereg_signal <= ctrl_regdst;
186 + aluctrl_aluop <= ctrl_aluop;
187 +
188 +// EX
189 + mux_alu_input1 <= reg_readdata2;
190 + mux_alu_input2 <= extend_output;
191 + mux_alu_signal <= ctrl_alusrc;
192 + shiftBranch_input <= extend_output;
193 +#1;
194 + alu_input1 <= reg_readdata1;
195 + alu_input2 <= mux_alu_output;
196 + alu_control <= aluctrl_sig;
197 + add_branch_input1 <= add_pc4_output;
198 + add_branch_input2 <= shiftBranch_output;
199 +#1;
200 + mux_branch_input1 <= add_pc4_output;
201 + mux_branch_input2 <= add_branch_output;
202 + mux_branch_signal <= ctrl_branch & alu_branch;
203 +#1;
204 +
205 +// MEM
206 + mux_jump_input1 <= mux_branch_output;
207 + mux_jump_input2 <= {add_pc4_output[31:28], shiftJump_output[27:0]};
208 + mux_jump_signal <= ctrl_jump;
209 + mem_addr <= alu_result;
210 + mem_writedata <= reg_readdata2;
211 + mem_memread <= ctrl_memread;
212 + mem_memwrite <= ctrl_memwrite;
213 +#1;
214 +// WB
215 + mux_writedata_input1 <= alu_result;
216 + mux_writedata_input2 <= mem_readdata;
217 + mux_writedata_signal <= ctrl_memtoreg;
218 +#1;
219 + reg_sig_regwrite <= ctrl_regwrite;
220 + reg_writereg1 <= mux_writereg_output;
221 + reg_writedata <= mux_writedata_output;
222 +#1;
223 + nextPC <= mux_jump_output;
224 +end
225 +
226 +endmodule
No preview for this file type
1 +m255
2 +K4
3 +z2
4 +13
5 +!s112 1.1
6 +!i10d 8192
7 +!i10e 25
8 +!i10f 100
9 +cModel Technology
10 +dC:/Modeltech_pe_edu_10.4a/examples
11 +vAdder
12 +Z0 !s110 1589714636
13 +!i10b 1
14 +!s100 C]ac0M5ljAN8jKk:YMWUe1
15 +IPABU2L8BVV2T>WDY4a1F@3
16 +Z1 VDg1SIo80bB@j0V0VzS_@n1
17 +Z2 dD:/class/Capstone1/KNW_Project2/Project/SingleCycle
18 +w1589585757
19 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
20 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v
21 +L0 1
22 +Z3 OP;L;10.4a;61
23 +r1
24 +!s85 0
25 +31
26 +!s108 1589714635.000000
27 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v|
28 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v|
29 +!s101 -O0
30 +!i113 1
31 +Z4 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0
32 +n@adder
33 +vALU
34 +R0
35 +!i10b 1
36 +!s100 iQ=Ee?Z0WEj<ciYnJKX4Q1
37 +Ib>08dCP?2Sj=]CBL[iS`d3
38 +R1
39 +R2
40 +w1589611061
41 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
42 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v
43 +L0 1
44 +R3
45 +r1
46 +!s85 0
47 +31
48 +Z5 !s108 1589714636.000000
49 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v|
50 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v|
51 +!s101 -O0
52 +!i113 1
53 +R4
54 +n@a@l@u
55 +vALUControl
56 +R0
57 +!i10b 1
58 +!s100 5M;8KH=?8dC:nP8HEC8AT0
59 +Ij7f_HKS32W^mlmZIBXe=P0
60 +R1
61 +R2
62 +w1589611047
63 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
64 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v
65 +L0 1
66 +R3
67 +r1
68 +!s85 0
69 +31
70 +R5
71 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v|
72 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v|
73 +!s101 -O0
74 +!i113 1
75 +R4
76 +n@a@l@u@control
77 +vClock
78 +R0
79 +!i10b 1
80 +!s100 OWQXV6kDYiT>ChTOoCFa]2
81 +IQ3e7_okQ4UFF5[gGVRJ]L2
82 +R1
83 +R2
84 +w1589585780
85 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
86 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v
87 +L0 1
88 +R3
89 +r1
90 +!s85 0
91 +31
92 +R5
93 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v|
94 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v|
95 +!s101 -O0
96 +!i113 1
97 +R4
98 +n@clock
99 +vControl
100 +R0
101 +!i10b 1
102 +!s100 gY[fP@o0^cofOhmoM3fic0
103 +IT_Y=g<>d6ldLOEgP5h`JH3
104 +R1
105 +R2
106 +w1589611718
107 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
108 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v
109 +L0 1
110 +R3
111 +r1
112 +!s85 0
113 +31
114 +R5
115 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v|
116 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v|
117 +!s101 -O0
118 +!i113 1
119 +R4
120 +n@control
121 +vDataMemory
122 +R0
123 +!i10b 1
124 +!s100 OEL;4hO=oB7l=fz0MFd4@3
125 +I;k?z>AFPT82RV0<M7@TV02
126 +R1
127 +R2
128 +w1589611018
129 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v
130 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v
131 +L0 1
132 +R3
133 +r1
134 +!s85 0
135 +31
136 +R5
137 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v|
138 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v|
139 +!s101 -O0
140 +!i113 1
141 +R4
142 +n@data@memory
143 +vInstructionMemory
144 +!s110 1589714794
145 +!i10b 1
146 +!s100 K@_X5c@ME[5c??9<ZFd<Z1
147 +I7Z2BcWI<YSdPm=L6;9b7=0
148 +R1
149 +R2
150 +w1589714789
151 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
152 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v
153 +L0 1
154 +R3
155 +r1
156 +!s85 0
157 +31
158 +!s108 1589714794.000000
159 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v|
160 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v|
161 +!s101 -O0
162 +!i113 1
163 +R4
164 +n@instruction@memory
165 +vMux32bit
166 +R0
167 +!i10b 1
168 +!s100 6HOE]5bDRSA[<HBJLTnYP0
169 +InTEk>^`Yjc4Xl2[WnZ3^Y3
170 +R1
171 +R2
172 +Z6 w1589610975
173 +Z7 8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
174 +Z8 FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v
175 +L0 1
176 +R3
177 +r1
178 +!s85 0
179 +31
180 +R5
181 +Z9 !s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v|
182 +Z10 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v|
183 +!s101 -O0
184 +!i113 1
185 +R4
186 +n@mux32bit
187 +vMux5bit
188 +R0
189 +!i10b 1
190 +!s100 1oCn>`bHoZ=?A6[JF911T3
191 +I]EmV`Adl6kHglkN9IK>LX2
192 +R1
193 +R2
194 +R6
195 +R7
196 +R8
197 +L0 16
198 +R3
199 +r1
200 +!s85 0
201 +31
202 +R5
203 +R9
204 +R10
205 +!s101 -O0
206 +!i113 1
207 +R4
208 +n@mux5bit
209 +vRegister
210 +R0
211 +!i10b 1
212 +!s100 nIf0^jhJBW[j`45[PBZ8o0
213 +Izh6D:XX;Ak7Z3_7[J=3113
214 +R1
215 +R2
216 +w1589611738
217 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
218 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v
219 +L0 1
220 +R3
221 +r1
222 +!s85 0
223 +31
224 +R5
225 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v|
226 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v|
227 +!s101 -O0
228 +!i113 1
229 +R4
230 +n@register
231 +vShiftLeft2
232 +R0
233 +!i10b 1
234 +!s100 eI5Ec:gWMIfN>mTKQIBY93
235 +IWRY1:Un@<nHGbA7hoKFL[1
236 +R1
237 +R2
238 +w1589586193
239 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
240 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v
241 +L0 1
242 +R3
243 +r1
244 +!s85 0
245 +31
246 +R5
247 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v|
248 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v|
249 +!s101 -O0
250 +!i113 1
251 +R4
252 +n@shift@left2
253 +vSignExtend
254 +Z11 !s110 1589714637
255 +!i10b 1
256 +!s100 ahVKzC^1fD@70fO3WnVUV0
257 +Izf_2?i[S@:;mKbJ:CXF753
258 +R1
259 +R2
260 +w1589586199
261 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
262 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v
263 +L0 1
264 +R3
265 +r1
266 +!s85 0
267 +31
268 +Z12 !s108 1589714637.000000
269 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v|
270 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v|
271 +!s101 -O0
272 +!i113 1
273 +R4
274 +n@sign@extend
275 +vtest
276 +R11
277 +!i10b 1
278 +!s100 Sm5D9nHWJl4JV?TA`lU4`0
279 +IW:K2A@A@^WBUal;dbVMEN0
280 +R1
281 +R2
282 +w1589610276
283 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
284 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v
285 +L0 1
286 +R3
287 +r1
288 +!s85 0
289 +31
290 +R12
291 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v|
292 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v|
293 +!s101 -O0
294 +!i113 1
295 +R4
296 +vtestbench
297 +R11
298 +!i10b 1
299 +!s100 z4HT6K50i`GDM7=h[az0B1
300 +Ik;o@8lk>glJB?9fgUD_;W3
301 +R1
302 +R2
303 +w1589625001
304 +8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
305 +FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v
306 +L0 1
307 +R3
308 +r1
309 +!s85 0
310 +31
311 +R12
312 +!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v|
313 +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v|
314 +!s101 -O0
315 +!i113 1
316 +R4
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
1 +m255
2 +K4
3 +z0
4 +cModel Technology