Showing
23 changed files
with
3284 additions
and
0 deletions
Project/SingleCycle/ALU.v
0 → 100644
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 |
Project/SingleCycle/ALU_Control.v
0 → 100644
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 |
Project/SingleCycle/Adder.v
0 → 100644
Project/SingleCycle/Control.v
0 → 100644
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 |
Project/SingleCycle/Data Memory.v
0 → 100644
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 |
Project/SingleCycle/InstructionMemory.v
0 → 100644
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 |
Project/SingleCycle/InstructionMemory.v.bak
0 → 100644
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 |
Project/SingleCycle/MIPS_SingleCycle.cr.mti
0 → 100644
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 | +} {} {}} |
Project/SingleCycle/MIPS_SingleCycle.mpf
0 → 100644
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 |
Project/SingleCycle/Mux.v
0 → 100644
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 |
Project/SingleCycle/Register.v
0 → 100644
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 |
Project/SingleCycle/ShiftLeft2.v
0 → 100644
Project/SingleCycle/SignExtend.v
0 → 100644
Project/SingleCycle/clock.v
0 → 100644
Project/SingleCycle/test.v
0 → 100644
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 |
Project/SingleCycle/testbench.v
0 → 100644
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 |
Project/SingleCycle/vsim.wlf
0 → 100644
No preview for this file type
Project/SingleCycle/work/_info
0 → 100644
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 |
Project/SingleCycle/work/_lib.qdb
0 → 100644
No preview for this file type
Project/SingleCycle/work/_lib1_0.qdb
0 → 100644
No preview for this file type
Project/SingleCycle/work/_lib1_0.qpg
0 → 100644
No preview for this file type
Project/SingleCycle/work/_lib1_0.qtl
0 → 100644
No preview for this file type
Project/SingleCycle/work/_vmake
0 → 100644
-
Please register or login to post a comment