From 1c6d952ae84a28a8b2a2df032d15b905f38f68ce Mon Sep 17 00:00:00 2001 From: hans Date: Thu, 15 Jun 2023 14:35:20 +0200 Subject: [PATCH] uebung_projekt --- .../compilescripts/simulation/compile.tcl | 46 + uebung_projekt/hdl_src/sv/FRAM_Controller.sv | 197 ++ uebung_projekt/hdl_src/sv/SPI_Master.sv | 188 ++ .../hdl_src/sv/SPI_Master_Control.sv | 240 ++ uebung_projekt/hdl_src/sv/assert_file.txt | 40 + uebung_projekt/hdl_src/sv/fram.sv | 86 + uebung_projekt/hdl_src/sv/fram.sv.bak | 86 + uebung_projekt/hdl_src/sv/interface.sv | 69 + uebung_projekt/hdl_src/sv/stimuli.sv | 92 + uebung_projekt/hdl_src/sv/timer.sv | 46 + uebung_projekt/hdl_src/sv/top_level.sv | 99 + uebung_projekt/hdl_src/sv/top_tb.sv | 52 + uebung_projekt/modelsim.ini | 2171 +++++++++++++++++ .../simulationsscripts/simulation.tcl | 30 + uebung_projekt/simulationsscripts/wave.do | 31 + uebung_projekt/transcript | 495 ++++ uebung_projekt/vsim.wlf | Bin 0 -> 286720 bytes uebung_projekt/work/@_opt/_lib.qdb | Bin 0 -> 49152 bytes uebung_projekt/work/@_opt/_lib1_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib1_0.qpg | Bin 0 -> 8192 bytes uebung_projekt/work/@_opt/_lib1_0.qtl | Bin 0 -> 54931 bytes uebung_projekt/work/@_opt/_lib2_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib2_0.qpg | 0 uebung_projekt/work/@_opt/_lib2_0.qtl | Bin 0 -> 24031 bytes uebung_projekt/work/@_opt/_lib3_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib3_0.qpg | 0 uebung_projekt/work/@_opt/_lib3_0.qtl | Bin 0 -> 16477 bytes uebung_projekt/work/@_opt/_lib4_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib4_0.qpg | Bin 0 -> 311296 bytes uebung_projekt/work/@_opt/_lib4_0.qtl | Bin 0 -> 80539 bytes uebung_projekt/work/@_opt/_lib5_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib5_0.qpg | Bin 0 -> 40960 bytes uebung_projekt/work/@_opt/_lib5_0.qtl | Bin 0 -> 5217 bytes uebung_projekt/work/@_opt/_lib6_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/@_opt/_lib6_0.qpg | Bin 0 -> 40960 bytes uebung_projekt/work/@_opt/_lib6_0.qtl | Bin 0 -> 5217 bytes uebung_projekt/work/_info | 398 +++ uebung_projekt/work/_lib.qdb | Bin 0 -> 49152 bytes uebung_projekt/work/_lib1_0.qdb | Bin 0 -> 32768 bytes uebung_projekt/work/_lib1_0.qpg | 0 uebung_projekt/work/_lib1_0.qtl | Bin 0 -> 31618 bytes uebung_projekt/work/_opt__lock | 1 + uebung_projekt/work/_vmake | 4 + 43 files changed, 4371 insertions(+) create mode 100644 uebung_projekt/compilescripts/simulation/compile.tcl create mode 100644 uebung_projekt/hdl_src/sv/FRAM_Controller.sv create mode 100644 uebung_projekt/hdl_src/sv/SPI_Master.sv create mode 100644 uebung_projekt/hdl_src/sv/SPI_Master_Control.sv create mode 100644 uebung_projekt/hdl_src/sv/assert_file.txt create mode 100644 uebung_projekt/hdl_src/sv/fram.sv create mode 100644 uebung_projekt/hdl_src/sv/fram.sv.bak create mode 100644 uebung_projekt/hdl_src/sv/interface.sv create mode 100644 uebung_projekt/hdl_src/sv/stimuli.sv create mode 100644 uebung_projekt/hdl_src/sv/timer.sv create mode 100644 uebung_projekt/hdl_src/sv/top_level.sv create mode 100644 uebung_projekt/hdl_src/sv/top_tb.sv create mode 100644 uebung_projekt/modelsim.ini create mode 100644 uebung_projekt/simulationsscripts/simulation.tcl create mode 100644 uebung_projekt/simulationsscripts/wave.do create mode 100644 uebung_projekt/transcript create mode 100644 uebung_projekt/vsim.wlf create mode 100644 uebung_projekt/work/@_opt/_lib.qdb create mode 100644 uebung_projekt/work/@_opt/_lib1_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib1_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib1_0.qtl create mode 100644 uebung_projekt/work/@_opt/_lib2_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib2_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib2_0.qtl create mode 100644 uebung_projekt/work/@_opt/_lib3_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib3_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib3_0.qtl create mode 100644 uebung_projekt/work/@_opt/_lib4_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib4_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib4_0.qtl create mode 100644 uebung_projekt/work/@_opt/_lib5_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib5_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib5_0.qtl create mode 100644 uebung_projekt/work/@_opt/_lib6_0.qdb create mode 100644 uebung_projekt/work/@_opt/_lib6_0.qpg create mode 100644 uebung_projekt/work/@_opt/_lib6_0.qtl create mode 100644 uebung_projekt/work/_info create mode 100644 uebung_projekt/work/_lib.qdb create mode 100644 uebung_projekt/work/_lib1_0.qdb create mode 100644 uebung_projekt/work/_lib1_0.qpg create mode 100644 uebung_projekt/work/_lib1_0.qtl create mode 100644 uebung_projekt/work/_opt__lock create mode 100644 uebung_projekt/work/_vmake diff --git a/uebung_projekt/compilescripts/simulation/compile.tcl b/uebung_projekt/compilescripts/simulation/compile.tcl new file mode 100644 index 0000000..e62590a --- /dev/null +++ b/uebung_projekt/compilescripts/simulation/compile.tcl @@ -0,0 +1,46 @@ +## ------------------------------------------------------------- +## +## File : compile.tcl +## Author(s) : Baesig +## Gerstner +## Email : juergen.baesig@fh-nuernberg.de +## Gerstnermi46611@th-nuernberg.de +## Organization : Georg-Simon-Ohm-Hochschule Nuernberg +## +## Note : +## +## ------------------------------------------------------------- +## History +## ------------------------------------------------------------- +## Version| Author | Mod. Date | Changes Made: +## v1.00 | Baesig | 09/04/2012 | first code +## v1.01 | Gerstner | 20/09/2013 | modified +## ------------------------------------------------------------- +##eoh + +.main clear + +echo +# ---------------------------------------------------------- +echo "create workspace" + if [file exists work] { vdel -all } + vlib work + vmap work ./work +echo +# ---------------------------------------------------------- +echo " Compile sv-Designfiles " +vlog -work work ./hdl_src/sv/interface.sv +vlog -work work ./hdl_src/sv/stimuli.sv +vlog -work work ./hdl_src/sv/top_level.sv +vlog -work work ./hdl_src/sv/top_tb.sv +vlog -work work ./hdl_src/sv/timer.sv +vlog -work work ./hdl_src/sv/SPI_Master_Control.sv +vlog -work work ./hdl_src/sv/SPI_Master.sv +vlog -work work ./hdl_src/sv/FRAM_Controller.sv +vlog -work work ./hdl_src/sv/fram.sv + +echo +# ---------------------------------------------------------- +echo " Run Simulation " +source ./simulationsscripts/simulation.tcl + diff --git a/uebung_projekt/hdl_src/sv/FRAM_Controller.sv b/uebung_projekt/hdl_src/sv/FRAM_Controller.sv new file mode 100644 index 0000000..7db77a6 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/FRAM_Controller.sv @@ -0,0 +1,197 @@ +module FRAM( + input i_clk, //Module (Module CLock = SPI Clock) + input i_nreset, + + input logic [19:0] i_adr, //Memorycell adress in FRAM + input logic [7:0] i_data, //data to write + output logic [7:0] o_data, //data to read + + input logic i_rw, //Read = 1, Write = 0 + input logic i_status, //If 1 Read Staut register + input logic i_hbn, //If 1 FRAM will enter Hibernation Mode + input logic i_cready, //Starts transmission + output logic o_busy, //Indicates FRAM Busy + + // SPI Interface + output o_SPI_Clk, + input i_SPI_MISO, + output o_SPI_MOSI, + output o_SPI_CS_n + +); + + + //FRAM SPI OP Codes + + //Write Enable Control + localparam WREN = 8'h06; //Set Write enable latch + localparam WRDI = 8'h04; //Reset write enable latch + //Register Access + localparam RDSR = 8'h05; //Read Status Register + localparam WRSR = 8'h01; //Write Status Register + //Memory Write + localparam WRITE = 8'h02; //Write Memory Data + //Memory Read + localparam READ = 8'h03; //Read Memory Data + localparam FSTRT = 8'h0B; //Fast read memory Data + //Special Sector Memory Access + localparam SSWR = 8'h42; //Spcial Sector Write + localparam SSRD = 8'h4B; //Special Sector Read + //Identification and serial Number + localparam RDID = 8'h9F; //Read Device ID + localparam RUID = 8'h4C; //Read Unique ID + localparam WRSN = 8'hC2; //Write Serial Number + localparam RDSN = 8'hC3; //Read Serial Number + //Low Power Modes + localparam DPD = 8'hBA; // Enter Deep Power-Down + localparam HBN = 8'hB9; // Enter Hibernate Mode + //end FRAM SPI OP Codes + + //Controller Specific + logic [3:0] state; + + + // SPI Specific + parameter SPI_MODE = 0; // CPOL = 0, CPHA = 0 + parameter CLKS_PER_HALF_BIT = 2; // 25MHz + parameter MAX_BYTES_PER_CS = 5; // 5 bytes max per chip select cycle + parameter CS_INACTIVE_CLKS = 1; // Adds delay (1clk) between cycles + + + logic [7:0] r_Master_TX_Byte = 0; + logic r_Master_TX_DV = 1'b0; + logic w_Master_TX_Ready; + logic w_Master_RX_DV; + logic [7:0] w_Master_RX_Byte; + logic [$clog2(MAX_BYTES_PER_CS+1)-1:0] w_Master_RX_Count, r_Master_TX_Count = 3'h1; //Standard 1 Byte pro CS Cycle + + + + SPI_Master_With_Single_CS + #(.SPI_MODE(SPI_MODE), //SPI Mode 0-3 + .CLKS_PER_HALF_BIT(CLKS_PER_HALF_BIT), //sets Frequency of SPI_CLK + .MAX_BYTES_PER_CS(MAX_BYTES_PER_CS), //Maximum Bytes per CS Cycle + .CS_INACTIVE_CLKS(CS_INACTIVE_CLKS) //Amount of Time holding CS Low befor next command + ) SPI + ( + // Control/Data Signals, + .i_Rst_L(i_nreset), // FPGA Reset + .i_Clk(i_clk), // FPGA Clock + + // TX (MOSI) Signals + .i_TX_Count(r_Master_TX_Count), // Number of bytes per CS + .i_TX_Byte(r_Master_TX_Byte), // Byte to transmit on MOSI + .i_TX_DV(r_Master_TX_DV), // Data Valid Pulse with i_TX_Byte + .o_TX_Ready(w_Master_TX_Ready), // Transmit Ready for Byte + + // RX (MISO) Signals + .o_RX_Count(w_Master_RX_Count), // Index of RX'd byte + .o_RX_DV(w_Master_RX_DV), // Data Valid pulse (1 clock cycle) + .o_RX_Byte(w_Master_RX_Byte), // Byte received on MISO + + // SPI Interface + .o_SPI_Clk(o_SPI_Clk), + .i_SPI_MISO(i_SPI_MISO), + .o_SPI_MOSI(o_SPI_MOSI), + .o_SPI_CS_n(o_SPI_CS_n) + ); + + //end SPI Specific + + + task SPI_SendByte(input [7:0] data); + @(posedge i_clk); + r_Master_TX_Byte <= data; + r_Master_TX_DV <= 1'b1; + @(posedge i_clk); + r_Master_TX_DV <= 1'b0; + @(posedge i_clk); + @(posedge w_Master_TX_Ready); + endtask //end SPI_SendByte + + //FRAM Tasks + task FRAM_Write(input [19:0] adr, input [7:0] data); //vgl. Fig.11 + + logic [7:0] value; + value <= 8'h0; + + //Set Write Enable + r_Master_TX_Count <= 3'b1; //1Byte Transaction + SPI_SendByte(WREN); + + //Write to fram + r_Master_TX_Count <= 3'h5; //5 Byte Transaction + SPI_SendByte(WRITE); //OPCode + SPI_SendByte({4'hF,adr[19:16]}); //Adress [23-16] + SPI_SendByte(adr[15:8]); //Adress [15-8] + SPI_SendByte(adr[7:0]); //Adress [7-0] + SPI_SendByte(data); //Data [7:0] + + //Reset Write Disable and Verify + do begin + r_Master_TX_Count <= 3'b1; //1Byte Transaction + SPI_SendByte(WRDI); //Set Write Disable + + FRAM_Read_Status(value); //Lese Status Register + end while(((value & 8'h2) >> 1) != 0); + + + endtask //end FRAM_Write + + task FRAM_Read(input [19:0] adr, output [7:0] data); //vgl. Fig12 + r_Master_TX_Count <= 3'h5; //5 Byte Transaction + SPI_SendByte(READ); //Opcode + SPI_SendByte({4'hF,adr[19:16]}); //Adress [23-16] + SPI_SendByte(adr[15:8]); //Adress [15-8] + SPI_SendByte(adr[7:0]); //Adress [7-0] + + SPI_SendByte(8'hAA); //Dummy Bits, read byte in w_Master_RX_Byte + data = w_Master_RX_Byte; + + endtask //end FRAM_READ + + task FRAM_Read_Status(output [7:0] data); //vgl. Fig9 + r_Master_TX_Count <= 3'h2; //2 Byte Transaction + SPI_SendByte(RDSR); //OpCode + SPI_SendByte(8'hFD); //Dummy Bits, read byte in w_Master_RX_Byte + data = w_Master_RX_Byte; + endtask //FRAM_Read_Status + + task FRAM_Hibernation(); //vgl. Fig22 + r_Master_TX_Count <= 3'h1; //1 Byte Transaction + SPI_SendByte(HBN); + endtask //FRAM_Hibernation + + + //end FRAM Tasks + + + always @(posedge i_clk or negedge i_nreset) begin + + state[0] = i_cready; + state[1] = i_hbn; + state[2] = i_status; + state[3] = i_rw; + + if(~i_nreset) begin //Modul Reset + o_data <= 8'h00; + end //end if + + if(w_Master_TX_Ready) begin + case(state) inside + 4'b??11: FRAM_Hibernation(); + 4'b?101: FRAM_Read_Status(o_data); + 4'b1001: FRAM_Read(i_adr, o_data); + 4'b0001: FRAM_Write(i_adr, i_data); + + default:; + endcase //endcase + end //endif + + end //end always + + + assign o_busy = w_Master_TX_Ready; + + +endmodule diff --git a/uebung_projekt/hdl_src/sv/SPI_Master.sv b/uebung_projekt/hdl_src/sv/SPI_Master.sv new file mode 100644 index 0000000..d245f3d --- /dev/null +++ b/uebung_projekt/hdl_src/sv/SPI_Master.sv @@ -0,0 +1,188 @@ +/////////////////////////////////////////////////////////////////////////////// +//Source: https://github.com/nandland/spi-master/tree/master/Verilog/source +//Description: SPI (Serial Peripheral Interface) Master +// With single chip-select (AKA Slave Select) capability +// +// Supports arbitrary length byte transfers. +// +// Instantiates a SPI Master and adds single CS. +// If multiple CS signals are needed, will need to use different +// module, OR multiplex the CS from this at a higher level. +// +// Note: i_Clk must be at least 2x faster than i_SPI_Clk +// +// Parameters: SPI_MODE, can be 0, 1, 2, or 3. See above. +// Can be configured in one of 4 modes: +// Mode | Clock Polarity (CPOL/CKP) | Clock Phase (CPHA) +// 0 | 0 | 0 +// 1 | 0 | 1 +// 2 | 1 | 0 +// 3 | 1 | 1 +// +// CLKS_PER_HALF_BIT - Sets frequency of o_SPI_Clk. o_SPI_Clk is +// derived from i_Clk. Set to integer number of clocks for each +// half-bit of SPI data. E.g. 100 MHz i_Clk, CLKS_PER_HALF_BIT = 2 +// would create o_SPI_CLK of 25 MHz. Must be >= 2 +// +// MAX_BYTES_PER_CS - Set to the maximum number of bytes that +// will be sent during a single CS-low pulse. +// +// CS_INACTIVE_CLKS - Sets the amount of time in clock cycles to +// hold the state of Chip-Selct high (inactive) before next +// command is allowed on the line. Useful if chip requires some +// time when CS is high between trasnfers. +/////////////////////////////////////////////////////////////////////////////// + + + +module SPI_Master_With_Single_CS + #(parameter SPI_MODE = 0, + parameter CLKS_PER_HALF_BIT = 2, + parameter MAX_BYTES_PER_CS = 1, + parameter CS_INACTIVE_CLKS = 1) + ( + // Control/Data Signals, + input i_Rst_L, // FPGA Reset + input i_Clk, // FPGA Clock + + // TX (MOSI) Signals + input [$clog2(MAX_BYTES_PER_CS+1)-1:0] i_TX_Count, // # bytes per CS low + input [7:0] i_TX_Byte, // Byte to transmit on MOSI + input i_TX_DV, // Data Valid Pulse with i_TX_Byte + output o_TX_Ready, // Transmit Ready for next byte + + // RX (MISO) Signals + output reg [$clog2(MAX_BYTES_PER_CS+1)-1:0] o_RX_Count, // Index RX byte + output o_RX_DV, // Data Valid pulse (1 clock cycle) + output [7:0] o_RX_Byte, // Byte received on MISO + + // SPI Interface + output o_SPI_Clk, + input i_SPI_MISO, + output o_SPI_MOSI, + output o_SPI_CS_n + ); + + localparam IDLE = 2'b00; + localparam TRANSFER = 2'b01; + localparam CS_INACTIVE = 2'b10; + + reg [1:0] r_SM_CS; + reg r_CS_n; + reg [$clog2(CS_INACTIVE_CLKS)-1:0] r_CS_Inactive_Count; + reg [$clog2(MAX_BYTES_PER_CS+1)-1:0] r_TX_Count; + wire w_Master_Ready; + + // Instantiate Master + SPI_Master + #(.SPI_MODE(SPI_MODE), + .CLKS_PER_HALF_BIT(CLKS_PER_HALF_BIT) + ) SPI_Master_Inst + ( + // Control/Data Signals, + .i_Rst_L(i_Rst_L), // FPGA Reset + .i_Clk(i_Clk), // FPGA Clock + + // TX (MOSI) Signals + .i_TX_Byte(i_TX_Byte), // Byte to transmit + .i_TX_DV(i_TX_DV), // Data Valid Pulse + .o_TX_Ready(w_Master_Ready), // Transmit Ready for Byte + + // RX (MISO) Signals + .o_RX_DV(o_RX_DV), // Data Valid pulse (1 clock cycle) + .o_RX_Byte(o_RX_Byte), // Byte received on MISO + + // SPI Interface + .o_SPI_Clk(o_SPI_Clk), + .i_SPI_MISO(i_SPI_MISO), + .o_SPI_MOSI(o_SPI_MOSI) + ); + + + // Purpose: Control CS line using State Machine + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + r_SM_CS <= IDLE; + r_CS_n <= 1'b1; // Resets to high + r_TX_Count <= 0; + r_CS_Inactive_Count <= CS_INACTIVE_CLKS; + end + else + begin + + case (r_SM_CS) + IDLE: + begin + if (r_CS_n & i_TX_DV) // Start of transmission + begin + r_TX_Count <= i_TX_Count - 1; // Register TX Count + r_CS_n <= 1'b0; // Drive CS low + r_SM_CS <= TRANSFER; // Transfer bytes + end + end + + TRANSFER: + begin + // Wait until SPI is done transferring do next thing + if (w_Master_Ready) + begin + if (r_TX_Count > 0) + begin + if (i_TX_DV) + begin + r_TX_Count <= r_TX_Count - 1; + end + end + else + begin + r_CS_n <= 1'b1; // we done, so set CS high + r_CS_Inactive_Count <= CS_INACTIVE_CLKS; + r_SM_CS <= CS_INACTIVE; + end // else: !if(r_TX_Count > 0) + end // if (w_Master_Ready) + end // case: TRANSFER + + CS_INACTIVE: + begin + if (r_CS_Inactive_Count > 0) + begin + r_CS_Inactive_Count <= r_CS_Inactive_Count - 1'b1; + end + else + begin + r_SM_CS <= IDLE; + end + end + + default: + begin + r_CS_n <= 1'b1; // we done, so set CS high + r_SM_CS <= IDLE; + end + endcase // case (r_SM_CS) + end + end // always @ (posedge i_Clk or negedge i_Rst_L) + + + // Purpose: Keep track of RX_Count + always @(posedge i_Clk) + begin + begin + if (r_CS_n) + begin + o_RX_Count <= 0; + end + else if (o_RX_DV) + begin + o_RX_Count <= o_RX_Count + 1'b1; + end + end + end + + assign o_SPI_CS_n = r_CS_n; + + assign o_TX_Ready = ((r_SM_CS == IDLE) | (r_SM_CS == TRANSFER && w_Master_Ready == 1'b1 && r_TX_Count > 0)) & ~i_TX_DV; + +endmodule // SPI_Master_With_Single_CS diff --git a/uebung_projekt/hdl_src/sv/SPI_Master_Control.sv b/uebung_projekt/hdl_src/sv/SPI_Master_Control.sv new file mode 100644 index 0000000..cbf4ec4 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/SPI_Master_Control.sv @@ -0,0 +1,240 @@ +////////////////////////////////////////////////////////////////////////////// +//Source: https://github.com/nandland/spi-master/tree/master/Verilog/source +// Description: SPI (Serial Peripheral Interface) Master +// Creates master based on input configuration. +// Sends a byte one bit at a time on MOSI +// Will also receive byte data one bit at a time on MISO. +// Any data on input byte will be shipped out on MOSI. +// +// To kick-off transaction, user must pulse i_TX_DV. +// This module supports multi-byte transmissions by pulsing +// i_TX_DV and loading up i_TX_Byte when o_TX_Ready is high. +// +// This module is only responsible for controlling Clk, MOSI, +// and MISO. If the SPI peripheral requires a chip-select, +// this must be done at a higher level. +// +// Note: i_Clk must be at least 2x faster than i_SPI_Clk +// +// Parameters: SPI_MODE, can be 0, 1, 2, or 3. See above. +// Can be configured in one of 4 modes: +// Mode | Clock Polarity (CPOL/CKP) | Clock Phase (CPHA) +// 0 | 0 | 0 +// 1 | 0 | 1 +// 2 | 1 | 0 +// 3 | 1 | 1 +// More: https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus#Mode_numbers +// CLKS_PER_HALF_BIT - Sets frequency of o_SPI_Clk. o_SPI_Clk is +// derived from i_Clk. Set to integer number of clocks for each +// half-bit of SPI data. E.g. 100 MHz i_Clk, CLKS_PER_HALF_BIT = 2 +// would create o_SPI_CLK of 25 MHz. Must be >= 2 +// +/////////////////////////////////////////////////////////////////////////////// + +module SPI_Master + #(parameter SPI_MODE = 0, + parameter CLKS_PER_HALF_BIT = 2) + ( + // Control/Data Signals, + input i_Rst_L, // FPGA Reset + input i_Clk, // FPGA Clock + + // TX (MOSI) Signals + input [7:0] i_TX_Byte, // Byte to transmit on MOSI + input i_TX_DV, // Data Valid Pulse with i_TX_Byte + output reg o_TX_Ready, // Transmit Ready for next byte + + // RX (MISO) Signals + output reg o_RX_DV, // Data Valid pulse (1 clock cycle) + output reg [7:0] o_RX_Byte, // Byte received on MISO + + // SPI Interface + output reg o_SPI_Clk, + input i_SPI_MISO, + output reg o_SPI_MOSI + ); + + // SPI Interface (All Runs at SPI Clock Domain) + wire w_CPOL; // Clock polarity + wire w_CPHA; // Clock phase + + reg [$clog2(CLKS_PER_HALF_BIT*2)-1:0] r_SPI_Clk_Count; + reg r_SPI_Clk; + reg [4:0] r_SPI_Clk_Edges; + reg r_Leading_Edge; + reg r_Trailing_Edge; + reg r_TX_DV; + reg [7:0] r_TX_Byte; + + reg [2:0] r_RX_Bit_Count; + reg [2:0] r_TX_Bit_Count; + + // CPOL: Clock Polarity + // CPOL=0 means clock idles at 0, leading edge is rising edge. + // CPOL=1 means clock idles at 1, leading edge is falling edge. + assign w_CPOL = (SPI_MODE == 2) | (SPI_MODE == 3); + + // CPHA: Clock Phase + // CPHA=0 means the "out" side changes the data on trailing edge of clock + // the "in" side captures data on leading edge of clock + // CPHA=1 means the "out" side changes the data on leading edge of clock + // the "in" side captures data on the trailing edge of clock + assign w_CPHA = (SPI_MODE == 1) | (SPI_MODE == 3); + + + + // Purpose: Generate SPI Clock correct number of times when DV pulse comes + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + o_TX_Ready <= 1'b0; + r_SPI_Clk_Edges <= 0; + r_Leading_Edge <= 1'b0; + r_Trailing_Edge <= 1'b0; + r_SPI_Clk <= w_CPOL; // assign default state to idle state + r_SPI_Clk_Count <= 0; + end + else + begin + + // Default assignments + r_Leading_Edge <= 1'b0; + r_Trailing_Edge <= 1'b0; + + if (i_TX_DV) + begin + o_TX_Ready <= 1'b0; + r_SPI_Clk_Edges <= 16; // Total # edges in one byte ALWAYS 16 + end + else if (r_SPI_Clk_Edges > 0) + begin + o_TX_Ready <= 1'b0; + + if (r_SPI_Clk_Count == CLKS_PER_HALF_BIT*2-1) + begin + r_SPI_Clk_Edges <= r_SPI_Clk_Edges - 1; + r_Trailing_Edge <= 1'b1; + r_SPI_Clk_Count <= 0; + r_SPI_Clk <= ~r_SPI_Clk; + end + else if (r_SPI_Clk_Count == CLKS_PER_HALF_BIT-1) + begin + r_SPI_Clk_Edges <= r_SPI_Clk_Edges - 1; + r_Leading_Edge <= 1'b1; + r_SPI_Clk_Count <= r_SPI_Clk_Count + 1; + r_SPI_Clk <= ~r_SPI_Clk; + end + else + begin + r_SPI_Clk_Count <= r_SPI_Clk_Count + 1; + end + end + else + begin + o_TX_Ready <= 1'b1; + end + + + end // else: !if(~i_Rst_L) + end // always @ (posedge i_Clk or negedge i_Rst_L) + + + // Purpose: Register i_TX_Byte when Data Valid is pulsed. + // Keeps local storage of byte in case higher level module changes the data + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + r_TX_Byte <= 8'h00; + r_TX_DV <= 1'b0; + end + else + begin + r_TX_DV <= i_TX_DV; // 1 clock cycle delay + if (i_TX_DV) + begin + r_TX_Byte <= i_TX_Byte; + end + end // else: !if(~i_Rst_L) + end // always @ (posedge i_Clk or negedge i_Rst_L) + + + // Purpose: Generate MOSI data + // Works with both CPHA=0 and CPHA=1 + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + o_SPI_MOSI <= 1'b0; + r_TX_Bit_Count <= 3'b111; // send MSb first + end + else + begin + // If ready is high, reset bit counts to default + if (o_TX_Ready) + begin + r_TX_Bit_Count <= 3'b111; + end + // Catch the case where we start transaction and CPHA = 0 + else if (r_TX_DV & ~w_CPHA) + begin + o_SPI_MOSI <= r_TX_Byte[3'b111]; + r_TX_Bit_Count <= 3'b110; + end + else if ((r_Leading_Edge & w_CPHA) | (r_Trailing_Edge & ~w_CPHA)) + begin + r_TX_Bit_Count <= r_TX_Bit_Count - 1; + o_SPI_MOSI <= r_TX_Byte[r_TX_Bit_Count]; + end + end + end + + + // Purpose: Read in MISO data. + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + o_RX_Byte <= 8'h00; + o_RX_DV <= 1'b0; + r_RX_Bit_Count <= 3'b111; + end + else + begin + + // Default Assignments + o_RX_DV <= 1'b0; + + if (o_TX_Ready) // Check if ready is high, if so reset bit count to default + begin + r_RX_Bit_Count <= 3'b111; + end + else if ((r_Leading_Edge & ~w_CPHA) | (r_Trailing_Edge & w_CPHA)) + begin + o_RX_Byte[r_RX_Bit_Count] <= i_SPI_MISO; // Sample data + r_RX_Bit_Count <= r_RX_Bit_Count - 1; + if (r_RX_Bit_Count == 3'b000) + begin + o_RX_DV <= 1'b1; // Byte done, pulse Data Valid + end + end + end + end + + + // Purpose: Add clock delay to signals for alignment. + always @(posedge i_Clk or negedge i_Rst_L) + begin + if (~i_Rst_L) + begin + o_SPI_Clk <= w_CPOL; + end + else + begin + o_SPI_Clk <= r_SPI_Clk; + end // else: !if(~i_Rst_L) + end // always @ (posedge i_Clk or negedge i_Rst_L) + + +endmodule // SPI_Master diff --git a/uebung_projekt/hdl_src/sv/assert_file.txt b/uebung_projekt/hdl_src/sv/assert_file.txt new file mode 100644 index 0000000..d0ad52f --- /dev/null +++ b/uebung_projekt/hdl_src/sv/assert_file.txt @@ -0,0 +1,40 @@ +//------------------------------------------------------ +// +// File : assert_file.sv +// Related Files : +// Author(s) : Mueller +// Email : muelleral82290@th-nuernberg.de +// Organization : Georg-Simon-Ohm-Hochschule Nuernberg +// Notes : Stimuli Modul +// +//------------------------------------------------------ +// History +//------------------------------------------------------ +// Version| Author | Mod. Date | Changes Made: +// v1.00 | Mueller | 27/04/2023 | first code +//------------------------------------------------------ + + + //properties-> HIER NOCH NICHTS GEMACHT! + + /* example + property p_ones; + bus_m.op == 4'h1 |-> bus_m.z == 4'hf; + endproperty + + property p_and; + bus_m.op == 4'h4 |-> bus_m.z == (bus_m.a & bus_m.b); + endproperty + + //assertions + + a_ones : assert property(@(posedge clk) p_ones) + $display("%t, property asserted: a_ones", $time()); + else + $display("%t, property failed: a_ones", $time()); + + a_and : assert property(@(posedge clk) p_and) + $display("%t, property asserted: a_and", $time()); + else + $display("%t, property failed: a_and", $time()); + */ diff --git a/uebung_projekt/hdl_src/sv/fram.sv b/uebung_projekt/hdl_src/sv/fram.sv new file mode 100644 index 0000000..553c71e --- /dev/null +++ b/uebung_projekt/hdl_src/sv/fram.sv @@ -0,0 +1,86 @@ + + + +module spi(bus.spi_port b, fram_if.fram_port_top i); + + parameter ringbuffer_size = 256; + + logic [19:0] FRAM_Adr; + logic [7:0] FRAM_DATA_OUT; + logic [7:0] FRAM_DATA_IN; + logic FRAM_RW; + logic FRAM_RSTATUS; + logic FRAM_hbn; + logic FRAM_go; + logic FRAM_busy; + + logic [7:0] clk_cntr; + + initial begin + FRAM_Adr <= 20'h0; + FRAM_DATA_IN <= 8'h0; + FRAM_RW = 0; + FRAM_RSTATUS = 0; + FRAM_hbn = 0; + FRAM_go = 0; + clk_cntr = 0; + end + + always @ (posedge b.timer) begin + if(b.dip[0] == 0) begin //Reset + FRAM_Adr <= 20'h0; + FRAM_DATA_IN <= 8'h0; + FRAM_RW = 0; + FRAM_RSTATUS = 0; + FRAM_hbn = 0; + FRAM_go = 0; + clk_cntr = 0; + end + else if(b.dip[1] == 1) begin //Read + FRAM_Adr <= (FRAM_Adr - 1) % (ringbuffer_size - 1); + FRAM_RW <= 1'h1; //Read + FRAM_go <= 1'h1; //Go + end + else if(b.dip[1] == 0) begin //Write + FRAM_Adr <= (FRAM_Adr + 1) % (ringbuffer_size - 1); + FRAM_DATA_IN <= {6'h0, b.dip[3:2]}; + FRAM_RW <= 1'h0; //Write Operation + FRAM_go <= 1'h1; //Go + end + end + + always @ (posedge b.clk) begin + if(FRAM_go == 1) + clk_cntr <= clk_cntr + 1; + + if(clk_cntr > 50 && FRAM_RW == 1'h1) begin + b.spi_read <= FRAM_DATA_OUT[1:0]; + FRAM_go <= 1'h0; + FRAM_RW <= 1'h0; + clk_cntr <= 0; + end + else if(clk_cntr > 50 && FRAM_RW == 1'h0) begin + FRAM_go <= 1'h0; + clk_cntr <= 0; + end + end + + + FRAM FRAM_ut( + .i_clk(b.clk), + .i_nreset(b.dip[0]), + .i_adr(FRAM_Adr), + .i_data(FRAM_DATA_IN), + .o_data(FRAM_DATA_OUT), + .i_rw(FRAM_RW), + .i_status(FRAM_RSTATUS), + .i_hbn(FRAM_hbn), + .i_cready(FRAM_go), + .o_busy(FRAM_busy), + .o_SPI_Clk(i.sclk), + .i_SPI_MISO(i.mosi), + .o_SPI_MOSI(i.mosi), + .o_SPI_CS_n(i.ss) + ); + +endmodule diff --git a/uebung_projekt/hdl_src/sv/fram.sv.bak b/uebung_projekt/hdl_src/sv/fram.sv.bak new file mode 100644 index 0000000..553c71e --- /dev/null +++ b/uebung_projekt/hdl_src/sv/fram.sv.bak @@ -0,0 +1,86 @@ + + + +module spi(bus.spi_port b, fram_if.fram_port_top i); + + parameter ringbuffer_size = 256; + + logic [19:0] FRAM_Adr; + logic [7:0] FRAM_DATA_OUT; + logic [7:0] FRAM_DATA_IN; + logic FRAM_RW; + logic FRAM_RSTATUS; + logic FRAM_hbn; + logic FRAM_go; + logic FRAM_busy; + + logic [7:0] clk_cntr; + + initial begin + FRAM_Adr <= 20'h0; + FRAM_DATA_IN <= 8'h0; + FRAM_RW = 0; + FRAM_RSTATUS = 0; + FRAM_hbn = 0; + FRAM_go = 0; + clk_cntr = 0; + end + + always @ (posedge b.timer) begin + if(b.dip[0] == 0) begin //Reset + FRAM_Adr <= 20'h0; + FRAM_DATA_IN <= 8'h0; + FRAM_RW = 0; + FRAM_RSTATUS = 0; + FRAM_hbn = 0; + FRAM_go = 0; + clk_cntr = 0; + end + else if(b.dip[1] == 1) begin //Read + FRAM_Adr <= (FRAM_Adr - 1) % (ringbuffer_size - 1); + FRAM_RW <= 1'h1; //Read + FRAM_go <= 1'h1; //Go + end + else if(b.dip[1] == 0) begin //Write + FRAM_Adr <= (FRAM_Adr + 1) % (ringbuffer_size - 1); + FRAM_DATA_IN <= {6'h0, b.dip[3:2]}; + FRAM_RW <= 1'h0; //Write Operation + FRAM_go <= 1'h1; //Go + end + end + + always @ (posedge b.clk) begin + if(FRAM_go == 1) + clk_cntr <= clk_cntr + 1; + + if(clk_cntr > 50 && FRAM_RW == 1'h1) begin + b.spi_read <= FRAM_DATA_OUT[1:0]; + FRAM_go <= 1'h0; + FRAM_RW <= 1'h0; + clk_cntr <= 0; + end + else if(clk_cntr > 50 && FRAM_RW == 1'h0) begin + FRAM_go <= 1'h0; + clk_cntr <= 0; + end + end + + + FRAM FRAM_ut( + .i_clk(b.clk), + .i_nreset(b.dip[0]), + .i_adr(FRAM_Adr), + .i_data(FRAM_DATA_IN), + .o_data(FRAM_DATA_OUT), + .i_rw(FRAM_RW), + .i_status(FRAM_RSTATUS), + .i_hbn(FRAM_hbn), + .i_cready(FRAM_go), + .o_busy(FRAM_busy), + .o_SPI_Clk(i.sclk), + .i_SPI_MISO(i.mosi), + .o_SPI_MOSI(i.mosi), + .o_SPI_CS_n(i.ss) + ); + +endmodule diff --git a/uebung_projekt/hdl_src/sv/interface.sv b/uebung_projekt/hdl_src/sv/interface.sv new file mode 100644 index 0000000..3120870 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/interface.sv @@ -0,0 +1,69 @@ +//------------------------------------------------------ +// +// File : interface.sv +// Related Files : +// Author(s) : Mueller +// Email : muelleral82290@th-nuernberg.de +// Organization : Georg-Simon-Ohm-Hochschule Nuernberg +// Notes : Stimuli Modul +// +//------------------------------------------------------ +// History +//------------------------------------------------------ +// Version| Author | Mod. Date | Changes Made: +// v1.00 | Mueller | 11/05/2023 | first code +//------------------------------------------------------ +//eoh + + +//interface for LED +//reg [2:0]rbg stores rgb values that depend on dip[3:2] +interface led_if(); + + logic [2:0]rgb; + + modport led_port_stim(input rgb); + modport led_port_top(output rgb); + + +endinterface : led_if + +//interface for DIPSCHALER +// dip[3:2] -> select colour, dip[1] -> read ~ 1/write ~ 0, dip[0] -> on ~ 1/off ~ 0 +interface dip_if(); + + logic [3:0]dip; + + modport dip_port_stim(output dip); + modport dip_port_top(input dip); + +endinterface : dip_if + +//interface for FRAM +// sck -> 0 ~ cummonication enabled, 1 ~ communication disabled +// clk -> system clock / timer +// miso -> testbench output +// mosi -> testbench input +interface fram_if(); + + logic ss; + logic mosi; + logic miso; + logic sclk; + + modport fram_port_stim(input mosi, sclk, ss, output miso); + modport fram_port_top(output mosi, sclk, ss, input miso); + +endinterface : fram_if + +//testbenchclock replaces the oscillator on the board +interface clock_if(); + + logic clk; + + modport clock_port_stim(output clk); + modport clock_port_top(input clk); + +endinterface : clock_if + + diff --git a/uebung_projekt/hdl_src/sv/stimuli.sv b/uebung_projekt/hdl_src/sv/stimuli.sv new file mode 100644 index 0000000..3b58b4b --- /dev/null +++ b/uebung_projekt/hdl_src/sv/stimuli.sv @@ -0,0 +1,92 @@ +//------------------------------------------------------ +// +// File : stimuli.sv +// Related Files : +// Author(s) : Mueller +// Email : muelleral82290@th-nuernberg.de +// Organization : Georg-Simon-Ohm-Hochschule Nuernberg +// Notes : Stimuli Modul +// +//------------------------------------------------------ +// History +//------------------------------------------------------ +// Version| Author | Mod. Date | Changes Made: +// v1.00 | Mueller | 11/05/2023 | first code +//------------------------------------------------------ + +//interface for LED +//reg [2:0]rbg stores rgb values that depend on dip[3:2] + +//interface for DIPSCHALER +// dip[3:2] -> select colour, dip[1] -> read ~ 1/write ~ 0, dip[0] -> on ~ 1/off ~ 0 + +//interface for FRAM +// sck -> 0 ~ cummonication enabled, 1 ~ communication disabled +// clk -> system clock / timer +// miso -> testbench output +// mosi -> testbench input + +//testbenchclock replaces the oscillator on the board + +// 27.04.23 -> #delay/#oszillatordelay is not set jet +// 09.06.23 -> removed fram_if.fram_port_stim fram_spi from the stimuli parameters, moved to "fram_module" +// 09.06.23 -> oszillatordelay = 1, delay = 5 + +`timescale 10ns/10ps + +module stimuli(led_if.led_port_stim led_stim, dip_if.dip_port_stim dip_stim, clock_if.clock_port_stim clk_stim); + + // generate oszillator signal for the timer block (clock_if) + reg oszillator; + + initial oszillator = 0; + + always + begin + #1 oszillator <= ! oszillator; + clk_stim.clk <= ! oszillator; + end + + + initial + begin + + /*~~~~toplevel is set to off~~~~~~~~*/ + /*~~~~dip[0] is set to 0~~~~~~~~~~~~*/ + dip_stim.dip = 4'b0000; + #500 dip_stim.dip = 4'b0010; + #500 dip_stim.dip = 4'b0100; + #500 dip_stim.dip = 4'b0110; + #500 dip_stim.dip = 4'b1000; + #500 dip_stim.dip = 4'b1010; + #500 dip_stim.dip = 4'b1100; + #500 dip_stim.dip = 4'b1110; + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + + /*~~~~toplevel is set to on~~~~~~~~~*/ + /*~~~~dip[0] is set to 1~~~~~~~~~~~~*/ + + /*~~fram is set to write~~~~~~~~*/ + /*~~~~dip[1] is set to 0~~~~~~~~*/ + #800 dip_stim.dip = 4'b0001; + #2000 dip_stim.dip = 4'b0101; + #2000 dip_stim.dip = 4'b1001; + #2000 dip_stim.dip = 4'b1101; + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + + /*~~fram is set to read~~~~~~~~~*/ + /*~~~~dip[1] is set to 1~~~~~~~~*/ + #2000 dip_stim.dip = 4'b0011; + #2000 dip_stim.dip = 4'b0111; + #2000 dip_stim.dip = 4'b1011; + #2000 dip_stim.dip = 4'b1111; + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + + end + +endmodule : stimuli + + + diff --git a/uebung_projekt/hdl_src/sv/timer.sv b/uebung_projekt/hdl_src/sv/timer.sv new file mode 100644 index 0000000..d8491c5 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/timer.sv @@ -0,0 +1,46 @@ +//------------------------------------------------------ +// +// File : Timer.sv +// Related Files : +// Author(s) : +// Email : +// Organization : Georg-Simon-Ohm-Hochschule Nuernberg +// Notes : +// +//------------------------------------------------------ +// History +//------------------------------------------------------ +// Version| Author | Mod. Date | Changes Made: +// v1.00 | | 11.05.2023 | +//------------------------------------------------------ +//eoh + + +module timer(bus.timer_port fpga_bus, clock_if.clock_port_top c); // (bus.timer b, clock_if.clock_port_top i) + + integer counter = 0; // internal count reg + integer reload_val; + + + always @ (posedge c.clk or fpga_bus.dip[0]) begin + if (!fpga_bus.dip[0]) begin + counter <= 0; + fpga_bus.timer <= 0; + end else begin + if(counter <= 800) begin // zu testzwecken kürzer 1000000 + counter++; + fpga_bus.timer <= 0; + end else begin + counter <= 0; + fpga_bus.timer <= 1; + end + end + + end + + //give the input clock on the bus + always@(posedge c.clk or negedge c.clk) + fpga_bus.clk = c.clk; + +endmodule : timer + diff --git a/uebung_projekt/hdl_src/sv/top_level.sv b/uebung_projekt/hdl_src/sv/top_level.sv new file mode 100644 index 0000000..8c80a37 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/top_level.sv @@ -0,0 +1,99 @@ +// Definition of top level +module top(led_if.led_port_top l, dip_if.dip_port_top d, fram_if.fram_port_top f, clock_if.clock_port_top c); + + // Initialisation of bus + bus fpga_bus(); + + // Initialisation of modules + timer t(fpga_bus, c); + steuerung st(fpga_bus, l); + spi s(fpga_bus, f); + parallelport p(fpga_bus, d); +endmodule : top + +// Definition of bus interface +interface bus(); + // bus wires + logic clk; // clock + logic timer; + logic [3:0]dip; + logic [1:0]spi_read; + + // modports from modules pov + modport timer_port(input dip, output timer, clk); //dip[0] + modport parallel_port(output dip); //dip[3:0] + modport steuerung_port(input dip, timer, spi_read, clk); //dip[3:0] / spi_read[1:0] + modport spi_port(input dip, clk, timer, output spi_read); //spi_read[1:0] +endinterface : bus + +// Definition of parallelport +module parallelport(bus.parallel_port b, dip_if.dip_port_top d); + + //always at change of the input dip, put the change on the bus + always@(d.dip[0] or d.dip[1] or d.dip[2] or d.dip[3]) + b.dip = d.dip; + +endmodule + +module steuerung(bus.steuerung_port b, led_if.led_port_top i); + /*... + b.dip[3:0], b.timer, b.spi_read[1:0] + i.rgb[2:0] + ...*/ +endmodule + +/* +_______________________________________________________________________________________________________________ +Testbench + __________________ ___________________ + | | | | + | DIP-Schalter | | FRAM-Speicher | + | | | | + |__________________| |___________________| + | | +____________________________|________________________________________________________________|_________________ +Toplevel | | + | | + dip[3:0]-->| |<--mosi, miso, sclk, ss + | | + ________|_________ ________|__________ + | | | | + | Parallelport | | SPI-Schnittstelle | + | | | & FRAM-Kontroller | + |__________________| |___________________| + | | + | | + dip[3:0]-->| |<--dip[3:0], timer, spi_read[1:0] + | | + | | + ---------------------------------------------------------------------BUS + | | + | | + dip[0], clk, timer-->| |<--dip[3:0], timer, spi_read[1:0] + | | + ________|_________ ___________________ ________|__________ + | | | | | | + | Timer | | Oszillator-Takt | | Ampel-Steuerung | + | | | (auf Board) | | | + |__________________| |___________________| |___________________| + | | | + | | | + clk-->------------------------------ |<--rgb[2:0] + | | +____________________________|________________________________________________________________|___________________ + | | + ________|_________ ________|__________ + | | | | + | Takt | | RGB-LED | + | (der Testbench) | | | + |__________________| |___________________| + + +__________________________________________________________________________________________________________________ + +*/ + + + + + diff --git a/uebung_projekt/hdl_src/sv/top_tb.sv b/uebung_projekt/hdl_src/sv/top_tb.sv new file mode 100644 index 0000000..9d3af21 --- /dev/null +++ b/uebung_projekt/hdl_src/sv/top_tb.sv @@ -0,0 +1,52 @@ +//------------------------------------------------------ +// +// File : top.sv +// Related Files : +// Author(s) : Mueller +// Email : muelleral82290@th-nuernberg.de +// Organization : Georg-Simon-Ohm-Hochschule Nuernberg +// Notes : Stimuli Modul +// +//------------------------------------------------------ +// History +//------------------------------------------------------ +// Version| Author | Mod. Date | Changes Made: +// v1.00 | Mueller | 27/04/2023 | first code +//------------------------------------------------------ +//eoh + +//interface for LED +//reg [2:0]rbg stores rgb values that depend on dip[3:2] + +//interface for DIPSCHALER +// dip[3:2] -> select colour, dip[1] -> read ~ 1/write ~ 0, dip[0] -> on ~ 1/off ~ 0 + +//interface for FRAM +// sck -> 0 ~ cummonication enabled, 1 ~ communication disabled +// clk -> system clock / timer +// miso -> testbench output +// mosi -> testbench input + +//testbenchclock replaces the oscillator on the board + +`timescale 10us/10ns + +module top_tb(); + + // Interface + led_if stim_led_if(); + dip_if stim_dip_if(); + fram_if stim_fram_if(); + clock_if stim_clock_if(); + + // Instanziierungen + top t1(stim_led_if, stim_dip_if, stim_fram_if, stim_clock_if); + stimuli s1(stim_led_if, stim_dip_if, stim_clock_if); + //fram_module f1(stim_fram_if); + + // assertions + //`include "./hdl_src/sv/led_assert.txt" + +endmodule : top_tb + + diff --git a/uebung_projekt/modelsim.ini b/uebung_projekt/modelsim.ini new file mode 100644 index 0000000..8abda64 --- /dev/null +++ b/uebung_projekt/modelsim.ini @@ -0,0 +1,2171 @@ +; vsim modelsim.ini file +[Version] +INIVersion = "2019.4" + +; Copyright 1991-2019 Mentor Graphics Corporation +; +; All Rights Reserved. +; +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. +; + +[Library] +others = $MODEL_TECH/../modelsim.ini +; +; VITAL concerns: +; +; The library ieee contains (among other packages) the packages of the +; VITAL 2000 standard. When a design uses VITAL 2000 exclusively, it should use +; the physical library ieee (recommended), or use the physical library +; vital2000, but not both. The design can use logical library ieee and/or +; vital2000 as long as each of these maps to the same physical library, either +; ieee or vital2000. +; +; A design using the 1995 version of the VITAL packages, whether or not +; it also uses the 2000 version of the VITAL packages, must have logical library +; name ieee mapped to physical library vital1995. (A design cannot use library +; vital1995 directly because some packages in this library use logical name ieee +; when referring to the other packages in the library.) The design source +; should use logical name ieee when referring to any packages there except the +; VITAL 2000 packages. Any VITAL 2000 present in the design must use logical +; name vital2000 (mapped to physical library vital2000) to refer to those +; packages. +; ieee = $MODEL_TECH/../vital1995 +; +; For compatiblity with previous releases, logical library name vital2000 maps +; to library vital2000 (a different library than library ieee, containing the +; same packages). +; A design should not reference VITAL from both the ieee library and the +; vital2000 library because the vital packages are effectively different. +; A design that references both the ieee and vital2000 libraries must have +; both logical names ieee and vital2000 mapped to the same library, either of +; these: +; $MODEL_TECH/../ieee +; $MODEL_TECH/../vital2000 +; + +; added mapping for ADMS + +;vhdl_psl_checkers = $MODEL_TECH/../vhdl_psl_checkers // Source files only for this release +;verilog_psl_checkers = $MODEL_TECH/../verilog_psl_checkers // Source files only for this release +;mvc_lib = $MODEL_TECH/../mvc_lib + +; Automatically perform logical->physical mapping for physical libraries that +; appear in -L/-Lf options with filesystem path delimiters (e.g. '.' or '/'). +; The tail of the filesystem path name is chosen as the logical library name. +; For example, in the command "vopt -L ./path/to/lib1 -o opttop top", +; vopt automatically performs the mapping "lib1 -> ./path/to/lib1". +; See the User Manual for more details. +; +; AutoLibMapping = 0 + +work = ./work +[DefineOptionset] +; Define optionset entries for the various compilers, vmake, and vsim. +; These option sets can be used with the "-optionset " syntax. +; i.e. +; vlog -optionset COMPILEDEBUG top.sv +; vsim -optionset UVMDEBUG my_top +; +; Following are some useful examples. + +; define a vsim optionset for uvm debugging +UVMDEBUG = -uvmcontrol=all -msgmode both -displaymsgmode both -classdebug -onfinish stop + +; define a vopt optionset for debugging +VOPTDEBUG = +acc -debugdb + +[encryption] +; For vencrypt and vhencrypt. + +; Controls whether to encrypt whole files by ignoring all protect directives +; (except "viewport" and "interface_viewport") that are present in the input. +; The default is 0, use embedded protect directives to control the encryption. +; Set this to 1 to encrypt whole files by ignoring embedded protect directives. +; wholefile = 0 + +; Sets the data_method to use for the symmetric session key. +; The session key is a symmetric key that is randomly generated for each +; protected region (envelope) and is the heart of all encryption. This is used +; to set the length of the session key to generate and use when encrypting the +; HDL text. Supported values are aes128, aes192, and aes256. +; data_method = aes128 + +; The following 2 are for specifying an IEEE Std. 1735 Version 2 (V2) encryption +; "recipe" comprising an optional common block, at least one tool block (which +; contains the key public key), and the text to be encrypted. The common block +; and any of the tool blocks may contain rights in the form of the "control" +; directive. The text to be encrypted is specified either by setting +; "wholefile" to 1 or by embedding protect "begin" and "end" directives in +; the input HDL files. + +; Common recipe specification file. This file is optional. Its presence will +; require at least one "toolblock" to be specified. +; Directives such as "author" "author_info" and "data_method", +; as well as the common block license specification, go in this file. +; common = + +; Tool block specification recipe(s). Public key file with optional tool block +; file name. May be multiply-defined; at least one tool block is required if +; a recipe is being specified. +; Key file is a file name with no extension (.deprecated or .active will be +; supplied by the encryption tool). +; Rights file name is optional. +; toolblock = [,]{:[,]} + +; Location of directory containing recipe files. +; The default location is in the product installation directory. +; keyring = $MODEL_TECH/../keyring + +; Enable encryption statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list] +; Add '-' to disable specific statistics. Default is [cmd,msg]. +Stats = cmd,msg + +[vcom] +; VHDL93 variable selects language version as the default. +; Default is VHDL-2002. +; Value of 0 or 1987 for VHDL-1987. +; Value of 1 or 1993 for VHDL-1993. +; Default or value of 2 or 2002 for VHDL-2002. +; Value of 3 or 2008 for VHDL-2008 +; Value of 4 or ams99 for VHDL-AMS-1999 +; Value of 5 or ams07 for VHDL-AMS-2007 +VHDL93 = 2002 + +; Ignore VHDL-2008 declaration of REAL_VECTOR in package STANDARD. Default is off. +; ignoreStandardRealVector = 1 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn off unbound-component warnings. Default is on. +; Show_Warning1 = 0 + +; Turn off process-without-a-wait-statement warnings. Default is on. +; Show_Warning2 = 0 + +; Turn off null-range warnings. Default is on. +; Show_Warning3 = 0 + +; Turn off no-space-in-time-literal warnings. Default is on. +; Show_Warning4 = 0 + +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. +; Show_Warning5 = 0 + +; Turn off optimization for IEEE std_logic_1164 package. Default is on. +; Optimize_1164 = 0 + +; Enable compiler statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list] +; Add '-' to disable specific statistics. Default is [time,cmd,msg]. +; Stats = time,cmd,msg + +; Turn on resolving of ambiguous function overloading in favor of the +; "explicit" function declaration (not the one automatically created by +; the compiler for each type declaration). Default is off. +; The .ini file has Explicit enabled so that std_logic_signed/unsigned +; will match the behavior of synthesis tools. +Explicit = 1 + +; Turn off acceleration of the VITAL packages. Default is to accelerate. +; NoVital = 1 + +; Turn off VITAL compliance checking. Default is checking on. +; NoVitalCheck = 1 + +; Ignore VITAL compliance checking errors. Default is to not ignore. +; IgnoreVitalErrors = 1 + +; Turn off VITAL compliance checking warnings. Default is to show warnings. +; Show_VitalChecksWarnings = 0 + +; Turn off PSL assertion warning messages. Default is to show warnings. +; Show_PslChecksWarnings = 0 + +; Enable parsing of embedded PSL assertions. Default is enabled. +; EmbeddedPsl = 0 + +; Keep silent about case statement static warnings. +; Default is to give a warning. +; NoCaseStaticError = 1 + +; Keep silent about warnings caused by aggregates that are not locally static. +; Default is to give a warning. +; NoOthersStaticError = 1 + +; Treat as errors: +; case statement static warnings +; warnings caused by aggregates that are not locally static +; Overrides NoCaseStaticError, NoOthersStaticError settings. +; PedanticErrors = 1 + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on some limited synthesis rule compliance checking. Checks only: +; -- signals used (read) by a process must be in the sensitivity list +; CheckSynthesis = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +; Require the user to specify a configuration for all bindings, +; and do not generate a compile time default binding for the +; component. This will result in an elaboration error of +; 'component not bound' if the user fails to do so. Avoids the rare +; issue of a false dependency upon the unused default binding. +; RequireConfigForAllDefaultBinding = 1 + +; Perform default binding at compile time. +; Default is to do default binding at load time. +; BindAtCompile = 1; + +; Inhibit range checking on subscripts of arrays. Range checking on +; scalars defined with subtypes is inhibited by default. +; NoIndexCheck = 1 + +; Inhibit range checks on all (implicit and explicit) assignments to +; scalar objects defined with subtypes. +; NoRangeCheck = 1 + +; Set the prefix to be honored for synthesis/coverage pragma recognition. +; Default is "". +; AddPragmaPrefix = "" + +; Ignore synthesis and coverage pragmas with this prefix. +; Default is "". +; IgnorePragmaPrefix = "" + +; Turn on code coverage in VHDL design units. Default is off. +; Coverage = sbceft + +; Turn off code coverage in VHDL subprograms. Default is on. +; CoverSub = 0 + +; Automatically exclude VHDL case statement OTHERS choice branches. +; This includes OTHERS choices in selected signal assigment statements. +; Default is to not exclude. +; CoverExcludeDefault = 1 + +; Control compiler and VOPT optimizations that are allowed when +; code coverage is on. Refer to the comment for this in the [vlog] area. +; CoverOpt = 3 + +; Turn on or off clkOpt optimization for code coverage. Default is on. +; CoverClkOpt = 1 + +; Turn on or off clkOpt optimization builtins for code coverage. Default is on. +; CoverClkOptBuiltins = 0 + +; Inform code coverage optimizations to respect VHDL 'H' and 'L' +; values on signals in conditions and expressions, and to not automatically +; convert them to '1' and '0'. Default is to not convert. +; CoverRespectHandL = 0 + +; Increase or decrease the maximum number of rows allowed in a UDP table +; implementing a VHDL condition coverage or expression coverage expression. +; More rows leads to a longer compile time, but more expressions covered. +; CoverMaxUDPRows = 192 + +; Increase or decrease the maximum number of input patterns that are present +; in FEC table. This leads to a longer compile time with more expressions +; covered with FEC metric. +; CoverMaxFECRows = 192 + +; Increase or decrease the limit on the size of expressions and conditions +; considered for expression and condition coverages. Higher FecUdpEffort leads +; to higher compile, optimize and simulation time, but more expressions and +; conditions are considered for coverage in the design. FecUdpEffort can +; be set to a number ranging from 1 (low) to 3 (high), defined as: +; 1 - (low) Only small expressions and conditions considered for coverage. +; 2 - (medium) Bigger expressions and conditions considered for coverage. +; 3 - (high) Very large expressions and conditions considered for coverage. +; The default setting is 1 (low). +; FecUdpEffort = 1 + +; Enable or disable Focused Expression Coverage analysis for conditions and +; expressions. Focused Expression Coverage data is provided by default when +; expression and/or condition coverage is active. +; CoverFEC = 0 + +; Enable or disable UDP Coverage analysis for conditions and expressions. +; UDP Coverage data is disabled by default when expression and/or condition +; coverage is active. +; CoverUDP = 1 + +; Enable or disable Rapid Expression Coverage mode for conditions and expressions. +; Disabling this would convert non-masking conditions in FEC tables to matching +; input patterns. +; CoverREC = 1 + +; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions +; for expression/condition coverage. +; NOTE: Enabling this may have a negative impact on simulation performance. +; CoverExpandReductionPrefix = 0 + +; Enable or disable short circuit evaluation of conditions and expressions when +; condition or expression coverage is active. Short circuit evaluation is enabled +; by default. +; CoverShortCircuit = 0 + +; Enable code coverage reporting of code that has been optimized away. +; The default is not to report. +; CoverReportCancelled = 1 + +; Enable deglitching of code coverage in combinatorial, non-clocked, processes. +; Default is no deglitching. +; CoverDeglitchOn = 1 + +; Control the code coverage deglitching period. A period of 0, eliminates delta +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". +; CoverDeglitchPeriod = 0 + +; Use this directory for compiler temporary files instead of "work/_temp" +; CompilerTempDir = /tmp + +; Set this to cause the compilers to force data to be committed to disk +; when the files are closed. +; SyncCompilerFiles = 1 + +; Add VHDL-AMS declarations to package STANDARD +; Default is not to add +; AmsStandard = 1 + +; Range and length checking will be performed on array indices and discrete +; ranges, and when violations are found within subprograms, errors will be +; reported. Default is to issue warnings for violations, because subprograms +; may not be invoked. +; NoDeferSubpgmCheck = 0 + +; Turn ON detection of FSMs having single bit current state variable. +; FsmSingle = 1 + +; Turn off reset state transitions in FSM. +; FsmResetTrans = 0 + +; Turn ON detection of FSM Implicit Transitions. +; FsmImplicitTrans = 1 + +; Controls whether or not to show immediate assertions with constant expressions +; in GUI/report/UCDB etc. By default, immediate assertions with constant +; expressions are shown in GUI/report/UCDB etc. This does not affect +; evaluation of immediate assertions. +; ShowConstantImmediateAsserts = 0 + +; Controls how VHDL basic identifiers are stored with the design unit. +; Does not make the language case-sensitive, affects only how declarations +; declared with basic identifiers have their names stored and printed +; (in the GUI, examine, etc.). +; Default is to preserve the case as originally depicted in the VHDL source. +; Value of 0 indicates to change all basic identifiers to lower case. +; PreserveCase = 0 + +; For Configuration Declarations, controls the effect that USE clauses have +; on visibility inside the configuration items being configured. If 1 +; (the default), then use pre-10.0 behavior. If 0, then for stricter LRM-compliance, +; extend the visibility of objects made visible through USE clauses into nested +; component configurations. +; OldVHDLConfigurationVisibility = 0 + +; Allows VHDL configuration declarations to be in a different library from +; the corresponding configured entity. Default is to not allow this for +; stricter LRM-compliance. +; SeparateConfigLibrary = 1; + +; Determine how mode OUT subprogram parameters of type array and record are treated. +; If 0 (the default), then only VHDL 2008 will do this initialization. +; If 1, always initialize the mode OUT parameter to its default value. +; If 2, do not initialize the mode OUT out parameter. +; Note that prior to release 10.1, all language versions did not initialize mode +; OUT array and record type parameters, unless overridden here via this mechanism. +; In release 10.1 and later, only files compiled with VHDL 2008 will cause this +; initialization, unless overridden here. +; InitOutCompositeParam = 0 + +; Generate symbols debugging database in only some special cases to save on +; the number of files in the library. For other design-units, this database is +; generated on-demand in vsim. +; Default is to to generate debugging database for all design-units. +; SmartDbgSym = 1 + +; Enable or disable automatic creation of missing libraries. +; Default is 1 (enabled) +; CreateLib = 1 + +; Describe compilation options according to matching file patterns. +; File pattern * matches all printing characters other than '/'. +; File pattern **/x matches all paths containing file/directory x. +; File pattern x/** matches all paths beginning at directory x. +; FileOptMap = (**/*.vhd => -2008); + +; Describe library targets of compilation according to matching file patterns. +; LibMap = (**/*.vhd => work); + +[vlog] +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on Verilog hazard checking (order-dependent accessing of global vars). +; Default is off. +; Hazard = 1 + +; Turn on converting regular Verilog identifiers to uppercase. Allows case +; insensitivity for module names. Default is no conversion. +; UpCase = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn on bad option warning. Default is off. +; Show_BadOptionWarning = 1 + +; Revert back to IEEE 1364-1995 syntax, default is 0 (off). +; vlog95compat = 1 + +; Turn off PSL warning messages. Default is to show warnings. +; Show_PslChecksWarnings = 0 + +; Enable parsing of embedded PSL assertions. Default is enabled. +; EmbeddedPsl = 0 + +; Enable compiler statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list,kb] +; Add '-' to disable specific statistics. Default is [time,cmd,msg]. +; Stats = time,cmd,msg + +; Set the threshold for automatically identifying sparse Verilog memories. +; A memory with total size in bytes equal to or more than the sparse memory +; threshold gets marked as sparse automatically, unless specified otherwise +; in source code or by the +nosparse commandline option of vlog or vopt. +; The default is 1M. (i.e. memories with total size equal +; to or greater than 1Mb are marked as sparse) +; SparseMemThreshold = 1048576 + +; Set the prefix to be honored for synthesis and coverage pragma recognition. +; Default is "". +; AddPragmaPrefix = "" + +; Ignore synthesis and coverage pragmas with this prefix. +; Default is "". +; IgnorePragmaPrefix = "" + +; Set the option to treat all files specified in a vlog invocation as a +; single compilation unit. The default value is set to 0 which will treat +; each file as a separate compilation unit as specified in the P1800 draft standard. +; MultiFileCompilationUnit = 1 + +; Turn on code coverage in Verilog design units. Default is off. +; Coverage = sbceft + +; Automatically exclude Verilog case statement default branches. +; Default is to not automatically exclude defaults. +; CoverExcludeDefault = 1 + +; Increase or decrease the maximum number of rows allowed in a UDP table +; implementing a VHDL condition coverage or expression coverage expression. +; More rows leads to a longer compile time, but more expressions covered. +; CoverMaxUDPRows = 192 + +; Increase or decrease the maximum number of input patterns that are present +; in FEC table. This leads to a longer compile time with more expressions +; covered with FEC metric. +; CoverMaxFECRows = 192 + +; Enable Multi Bit Expression Coverage in a Design, If design has expression with +; multi bit operands, this option enables its Expression Coverage. +; The default value is 0. +; CoverFecMultiBit = 1 + +; Increase or decrease the limit on the size of expressions and conditions +; considered for expression and condition coverages. Higher FecUdpEffort leads +; to higher compile, optimize and simulation time, but more expressions and +; conditions are considered for coverage in the design. FecUdpEffort can +; be set to a number ranging from 1 (low) to 3 (high), defined as: +; 1 - (low) Only small expressions and conditions considered for coverage. +; 2 - (medium) Bigger expressions and conditions considered for coverage. +; 3 - (high) Very large expressions and conditions considered for coverage. +; The default setting is 1 (low). +; FecUdpEffort = 1 + +; Enable or disable Focused Expression Coverage analysis for conditions and +; expressions. Focused Expression Coverage data is provided by default when +; expression and/or condition coverage is active. +; CoverFEC = 0 + +; Enable or disable UDP Coverage analysis for conditions and expressions. +; UDP Coverage data is disabled by default when expression and/or condition +; coverage is active. +; CoverUDP = 1 + +; Enable or disable Rapid Expression Coverage mode for conditions and expressions. +; Disabling this would convert non-masking conditions in FEC tables to matching +; input patterns. +; CoverREC = 1 + +; Enable or disable bit-blasting multi-bit operands of reduction prefix expressions +; for expression/condition coverage. +; NOTE: Enabling this may have a negative impact on simulation performance. +; CoverExpandReductionPrefix = 0 + +; Enable or disable short circuit evaluation of conditions and expressions when +; condition or expression coverage is active. Short circuit evaluation is enabled +; by default. +; CoverShortCircuit = 0 + +; Enable deglitching of code coverage in combinatorial, non-clocked, processes. +; Default is no deglitching. +; CoverDeglitchOn = 1 + +; Control the code coverage deglitching period. A period of 0, eliminates delta +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". +; CoverDeglitchPeriod = 0 + +; Turn on code coverage in VLOG `celldefine modules, modules containing +; specify blocks, and modules included using vlog -v and -y. Default is off. +; CoverCells = 1 + +; Enable code coverage reporting of code that has been optimized away. +; The default is not to report. +; CoverReportCancelled = 1 + +; Control compiler and VOPT optimizations that are allowed when +; code coverage is on. This is a number from 0 to 5, with the following +; meanings (the default is 3): +; 5 -- All allowable optimizations are on. +; 4 -- Turn off removing unreferenced code. +; 3 -- Turn off process, always block and if statement merging. +; 2 -- Turn off expression optimization, converting primitives +; to continuous assignments, VHDL subprogram inlining. +; and VHDL clkOpt (converting FF's to builtins). +; 1 -- Turn off continuous assignment optimizations and clock suppression. +; 0 -- Turn off Verilog module inlining and VHDL arch inlining. +; HOWEVER, if fsm coverage is turned on, optimizations will be forced to +; level 3, with also turning off converting primitives to continuous assigns. +; CoverOpt = 3 + +; Specify the override for the default value of "cross_num_print_missing" +; option for the Cross in Covergroups. If not specified then LRM default +; value of 0 (zero) is used. This is a compile time option. +; SVCrossNumPrintMissingDefault = 0 + +; Setting following to 1 would cause creation of variables which +; would represent the value of Coverpoint expressions. This is used +; in conjunction with "SVCoverpointExprVariablePrefix" option +; in the modelsim.ini +; EnableSVCoverpointExprVariable = 0 + +; Specify the override for the prefix used in forming the variable names +; which represent the Coverpoint expressions. This is used in conjunction with +; "EnableSVCoverpointExprVariable" option of the modelsim.ini +; The default prefix is "expr". +; The variable name is +; variable name => _ +; SVCoverpointExprVariablePrefix = expr + +; Override for the default value of the SystemVerilog covergroup, +; coverpoint, and cross option.goal (defined to be 100 in the LRM). +; NOTE: It does not override specific assignments in SystemVerilog +; source code. NOTE: The modelsim.ini variable "SVCovergroupGoal" +; in the [vsim] section can override this value. +; SVCovergroupGoalDefault = 100 + +; Override for the default value of the SystemVerilog covergroup, +; coverpoint, and cross type_option.goal (defined to be 100 in the LRM) +; NOTE: It does not override specific assignments in SystemVerilog +; source code. NOTE: The modelsim.ini variable "SVCovergroupTypeGoal" +; in the [vsim] section can override this value. +; SVCovergroupTypeGoalDefault = 100 + +; Specify the override for the default value of "strobe" option for the +; Covergroup Type. This is a compile time option which forces "strobe" to +; a user specified default value and supersedes SystemVerilog specified +; default value of '0'(zero). NOTE: This can be overriden by a runtime +; modelsim.ini variable "SVCovergroupStrobe" in the [vsim] section. +; SVCovergroupStrobeDefault = 0 + +; Specify the override for the default value of "per_instance" option for the +; Covergroup variables. This is a compile time option which forces "per_instance" +; to a user specified default value and supersedes SystemVerilog specified +; default value of '0'(zero). +; SVCovergroupPerInstanceDefault = 0 + +; Specify the override for the default value of "get_inst_coverage" option for the +; Covergroup variables. This is a compile time option which forces +; "get_inst_coverage" to a user specified default value and supersedes +; SystemVerilog specified default value of '0'(zero). +; SVCovergroupGetInstCoverageDefault = 0 + +; +; A space separated list of resource libraries that contain precompiled +; packages. The behavior is identical to using the "-L" switch. +; +; LibrarySearchPath = [ ...] +LibrarySearchPath = mtiAvm mtiRnm mtiOvm mtiUvm mtiUPF infact + +; The behavior is identical to the "-mixedansiports" switch. Default is off. +; MixedAnsiPorts = 1 + +; Enable SystemVerilog 3.1a $typeof() function. Default is off. +; EnableTypeOf = 1 + +; Only allow lower case pragmas. Default is disabled. +; AcceptLowerCasePragmaOnly = 1 + +; Set the maximum depth permitted for a recursive include file nesting. +; IncludeRecursionDepthMax = 5 + +; Turn ON detection of FSMs having single bit current state variable. +; FsmSingle = 1 + +; Turn off reset state transitions in FSM. +; FsmResetTrans = 0 + +; Turn off detections of FSMs having x-assignment. +; FsmXAssign = 0 + +; Turn ON detection of FSM Implicit Transitions. +; FsmImplicitTrans = 1 + +; List of file suffixes which will be read as SystemVerilog. White space +; in extensions can be specified with a back-slash: "\ ". Back-slashes +; can be specified with two consecutive back-slashes: "\\"; +; SvFileSuffixes = sv svp svh + +; This setting is the same as the vlog -sv command line switch. +; Enables SystemVerilog features and keywords when true (1). +; When false (0), the rules of IEEE Std 1364-2005 are followed and +; SystemVerilog keywords are ignored. +; Svlog = 0 + +; Prints attribute placed upon SV packages during package import +; when true (1). The attribute will be ignored when this +; entry is false (0). The attribute name is "package_load_message". +; The value of this attribute is a string literal. +; Default is true (1). +; PrintSVPackageLoadingAttribute = 1 + +; Do not show immediate assertions with constant expressions in +; GUI/reports/UCDB etc. By default immediate assertions with constant +; expressions are shown in GUI/reports/UCDB etc. This does not affect +; evaluation of immediate assertions. +; ShowConstantImmediateAsserts = 0 + +; Controls if untyped parameters that are initialized with values greater +; than 2147483647 are mapped to generics of type INTEGER or ignored. +; If mapped to VHDL Integers, values greater than 2147483647 +; are mapped to negative values. +; Default is to map these parameter to generic of type INTEGER +; ForceUnsignedToVHDLInteger = 1 + +; Enable AMS wreal (wired real) extensions. Default is 0. +; WrealType = 1 + +; Controls SystemVerilog Language Extensions. These options enable +; some non-LRM compliant behavior. +; SvExtensions = [+|-][,[+|-]*] + +; Generate symbols debugging database in only some special cases to save on +; the number of files in the library. For other design-units, this database is +; generated on-demand in vsim. +; Default is to to generate debugging database for all design-units. +; SmartDbgSym = 1 + +; Controls how $unit library entries are named. Valid options are: +; "file" (generate name based on the first file on the command line) +; "du" (generate name based on first design unit following an item +; found in $unit scope) +; CUAutoName = file + +; Enable or disable automatic creation of missing libraries. +; Default is 1 (enabled) +; CreateLib = 1 + +[sccom] +; Enable use of SCV include files and library. Default is off. +; UseScv = 1 + +; Add C++ compiler options to the sccom command line by using this variable. +; CppOptions = -g + +; Use custom C++ compiler located at this path rather than the default path. +; The path should point directly at a compiler executable. +; CppPath = /usr/bin/g++ + +; Specify the compiler version from the list of support GNU compilers. +; examples 4.3.3, 4.5.0 +; CppInstall = 4.5.0 + +; Enable verbose messages from sccom. Default is off. +; SccomVerbose = 1 + +; sccom logfile. Default is no logfile. +; SccomLogfile = sccom.log + +; Enable use of SC_MS include files and library. Default is off. +; UseScMs = 1 + +; Use SystemC-2.2 instead of the default SystemC-2.3. Default is off. +; Sc22Mode = 1 + +; Enable compiler statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list,kb] +; Add '-' to disable specific statistics. Default is [time,cmd,msg]. +; Stats = time,cmd,msg + +; Enable or disable automatic creation of missing libraries. +; Default is 1 (enabled) +; CreateLib = 1 + +; Enable use of UVMC library. Default is off. +; UseUvmc = 1 + +[vopt] +; Turn on code coverage in vopt. Default is off. +; Coverage = sbceft + +; enable or disable param saving in UCDB. +; CoverageSaveParam = 0 + +; Control compiler optimizations that are allowed when +; code coverage is on. Refer to the comment for this in the [vlog] area. +; CoverOpt = 3 + +; Controls set of CoverConstructs that are being considered for Coverage +; Collection. +; Some of Valid options are: default,set1,set2 +; Covermode = default + +; Controls set of HDL cover constructs that would be considered(or not considered) +; for Coverage Collection. (Default corresponds to covermode default). +; Some of Valid options are: "ca", "citf", "cifl", "tcint", "fsmqs". +; Coverconstruct = noca,nocitf,nofsmtf,nofsmds,noctes,nocicl,nocprc,nocfl,nofsmup,nocifl,nocpm,notcint,nocpkg,nocsva + +; Increase or decrease the maximum number of rows allowed in a UDP table +; implementing a VHDL condition coverage or expression coverage expression. +; More rows leads to a longer compile time, but more expressions covered. +; CoverMaxUDPRows = 192 + +; Increase or decrease the maximum number of input patterns that are present +; in FEC table. This leads to a longer compile time with more expressions +; covered with FEC metric. +; CoverMaxFECRows = 192 + +; Enable Multi Bit Expression Coverage in a Design, If design has expression with +; multi bit operands, this option enables its Expression Coverage. +; The default value is 0. +; CoverFecMultiBit = 1 + +; Increase or decrease the limit on the size of expressions and conditions +; considered for expression and condition coverages. Higher FecUdpEffort leads +; to higher compile, optimize and simulation time, but more expressions and +; conditions are considered for coverage in the design. FecUdpEffort can +; be set to a number ranging from 1 (low) to 3 (high), defined as: +; 1 - (low) Only small expressions and conditions considered for coverage. +; 2 - (medium) Bigger expressions and conditions considered for coverage. +; 3 - (high) Very large expressions and conditions considered for coverage. +; The default setting is 1 (low). +; FecUdpEffort = 1 + +; Enable code coverage reporting of code that has been optimized away. +; The default is not to report. +; CoverReportCancelled = 1 + +; Enable deglitching of code coverage in combinatorial, non-clocked, processes. +; Default is no deglitching. +; CoverDeglitchOn = 1 + +; Enable compiler statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list,kb] +; Add '-' to disable specific statistics. Default is [time,cmd,msg]. +; Stats = time,cmd,msg + +; Control the code coverage deglitching period. A period of 0, eliminates delta +; cycle glitches. The value of CoverDeglitchPeriod needs to be either be 0 or a +; time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". +; CoverDeglitchPeriod = 0 + +; Do not show immediate assertions with constant expressions in +; GUI/reports/UCDB etc. By default immediate assertions with constant +; expressions are shown in GUI/reports/UCDB etc. This does not affect +; evaluation of immediate assertions. +; ShowConstantImmediateAsserts = 0 + +; Set the maximum number of iterations permitted for a generate loop. +; Restricting this permits the implementation to recognize infinite +; generate loops. +; GenerateLoopIterationMax = 100000 + +; Set the maximum depth permitted for a recursive generate instantiation. +; Restricting this permits the implementation to recognize infinite +; recursions. +; GenerateRecursionDepthMax = 200 + +; Set the number of processes created during the code generation phase. +; By default a heuristic is used to set this value. This may be set to 0 +; to disable this feature completely. +; ParallelJobs = 0 + +; Controls SystemVerilog Language Extensions. These options enable +; some non-LRM compliant behavior. +; SvExtensions = [+|-][,[+|-]*] + +; Load the specified shared objects with the RTLD_GLOBAL flag. +; This gives global visibility to all symbols in the shared objects, +; meaning that subsequently loaded shared objects can bind to symbols +; in the global shared objects. The list of shared objects should +; be whitespace delimited. This option is not supported on the +; Windows or AIX platforms. +; GlobalSharedObjectList = example1.so example2.so example3.so + +; Disable SystemVerilog elaboration system task messages +; IgnoreSVAInfo = 1 +; IgnoreSVAWarning = 1 +; IgnoreSVAError = 1 +; IgnoreSVAFatal = 1 + +; Enable or disable automatic creation of missing libraries. +; Default is 1 (enabled) +; CreateLib = 1 + +[vsim] +; vopt flow +; Set to turn on automatic optimization of a design. +; Default is on +VoptFlow = 1 + +; Simulator resolution +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. +Resolution = ns + +; Disable certain code coverage exclusions automatically. +; Assertions and FSM are exluded from the code coverage by default +; Set AutoExclusionsDisable = fsm to enable code coverage for fsm +; Set AutoExclusionsDisable = assertions to enable code coverage for assertions +; Set AutoExclusionsDisable = all to enable code coverage for all the automatic exclusions +; Or specify comma or space separated list +;AutoExclusionsDisable = fsm,assertions + +; User time unit for run commands +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the +; unit specified for Resolution. For example, if Resolution is 100ps, +; then UserTimeUnit defaults to ps. +; Should generally be set to default. +UserTimeUnit = default + +; Default run length +RunLength = 100 + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 10000000 + +; Specify libraries to be searched for precompiled modules +; LibrarySearchPath = [ ...] + +; Set XPROP assertion fail limit. Default is 5. +; Any positive integer, -1 for infinity. +; XpropAssertionLimit = 5 + +; Control PSL and Verilog Assume directives during simulation +; Set SimulateAssumeDirectives = 0 to disable assume being simulated as asserts +; Set SimulateAssumeDirectives = 1 to enable assume simulation as asserts +; SimulateAssumeDirectives = 1 + +; Control the simulation of PSL and SVA +; These switches can be overridden by the vsim command line switches: +; -psl, -nopsl, -sva, -nosva. +; Set SimulatePSL = 0 to disable PSL simulation +; Set SimulatePSL = 1 to enable PSL simulation (default) +; SimulatePSL = 1 +; Set SimulateSVA = 0 to disable SVA simulation +; Set SimulateSVA = 1 to enable concurrent SVA simulation (default) +; SimulateSVA = 1 + +; Control SVA and VHDL immediate assertion directives during simulation +; Set SimulateImmedAsserts = 0 to disable simulation of immediate asserts +; Set SimulateImmedAsserts = 1 to enable simulation of immediate asserts +; SimulateImmedAsserts = 1 + +; License feature mappings for Verilog and VHDL +; qhsimvh Single language VHDL license +; qhsimvl Single language Verilog license +; msimhdlsim Language neutral license for either Verilog or VHDL +; msimhdlmix Second language only, language neutral license for either +; Verilog or VHDL +; +; Directives to license manager can be set either as single value or as +; space separated multi-values: +; vhdl Immediately checkout and hold a VHDL license (i.e., one of +; qhsimvh, msimhdlsim, or msimhdlmix) +; vlog Immediately checkout and hold a Verilog license (i.e., one of +; qhsimvl, msimhdlsim, or msimhdlmix) +; plus Immediately checkout and hold a VHDL license and a Verilog license +; noqueue Do not wait in the license queue when a license is not available +; viewsim Try for viewer license but accept simulator license(s) instead +; of queuing for viewer license (PE ONLY) +; noviewer Disable checkout of msimviewer license feature (PE ONLY) +; noslvhdl Disable checkout of qhsimvh license feature +; noslvlog Disable checkout of qhsimvl license feature +; nomix Disable checkout of msimhdlmix license feature +; nolnl Disable checkout of msimhdlsim license feature +; mixedonly Disable checkout of qhsimvh and qhsimvl license features +; lnlonly Disable checkout of qhsimvh,qhsimvl, and msimhdlmix license features +; +; Examples (remove ";" comment character to activate licensing directives): +; Single directive: +; License = plus +; Multi-directive (Note: space delimited directives): +; License = noqueue plus + +; Severity level of a VHDL assertion message or of a SystemVerilog severity system task +; which will cause a running simulation to stop. +; VHDL assertions and SystemVerilog severity system task that occur with the +; given severity or higher will cause a running simulation to stop. +; This value is ignored during elaboration. +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal +BreakOnAssertion = 3 + +; Severity level of a tool message which will cause a running simulation to +; stop. This value is ignored during elaboration. Default is to not break. +; 0 = Note 1 = Warning 2 = Error 3 = Fatal +;BreakOnMessage = 2 + +; The class debug feature enables more visibility and tracking of class instances +; during simulation. By default this feature is disabled (0). To enable this +; feature set ClassDebug to 1. +; ClassDebug = 1 + +; Message Format conversion specifications: +; %S - Severity Level of message/assertion +; %R - Text of message +; %T - Time of message +; %D - Delta value (iteration number) of Time +; %K - Kind of path: Instance/Region/Signal/Process/Foreign Process/Unknown/Protected +; %i - Instance/Region/Signal pathname with Process name (if available) +; %I - shorthand for one of these: +; " %K: %i" +; " %K: %i File: %F" (when path is not Process or Signal) +; except that the %i in this case does not report the Process name +; %O - Process name +; %P - Instance/Region path without leaf process +; %F - File name +; %L - Line number; if assertion message, then line number of assertion or, if +; assertion is in a subprogram, line from which the call is made +; %u - Design unit name in form library.primary +; %U - Design unit name in form library.primary(secondary) +; %% - The '%' character itself +; +; If specific format for Severity Level is defined, use that format. +; Else, for a message that occurs during elaboration: +; -- Failure/Fatal message in VHDL region that is not a Process, and in +; certain non-VHDL regions, uses MessageFormatBreakLine; +; -- Failure/Fatal message otherwise uses MessageFormatBreak; +; -- Note/Warning/Error message uses MessageFormat. +; Else, for a message that occurs during runtime and triggers a breakpoint because +; of the BreakOnAssertion setting: +; -- if in a VHDL region that is not a Process, uses MessageFormatBreakLine; +; -- otherwise uses MessageFormatBreak. +; Else (a runtime message that does not trigger a breakpoint) uses MessageFormat. +; +; MessageFormatNote = "** %S: %R\n Time: %T Iteration: %D%I\n" +; MessageFormatWarning = "** %S: %R\n Time: %T Iteration: %D%I\n" +; MessageFormatError = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" +; MessageFormatFail = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" +; MessageFormatFatal = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" +; MessageFormatBreakLine = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F Line: %L\n" +; MessageFormatBreak = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" +; MessageFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" + +; Error File - alternate file for storing error messages +; ErrorFile = error.log + +; Simulation Breakpoint messages +; This flag controls the display of function names when reporting the location +; where the simulator stops because of a breakpoint or fatal error. +; Example with function name: # Break in Process ctr at counter.vhd line 44 +; Example without function name: # Break at counter.vhd line 44 +; Default value is 1. +ShowFunctions = 1 + +; Default radix for all windows and commands. +; Radix may be one of: symbolic, ascii, binary, octal, decimal, hex, unsigned +; Flags may be one of: enumnumeric, showbase, wreal +DefaultRadix = hexadecimal +DefaultRadixFlags = showbase +; Set to 1 for make the signal_force VHDL and Verilog functions use the +; default radix when processing the force value. Prior to 10.2 signal_force +; used the default radix, now it always uses symbolic unless value explicitly indicates base +;SignalForceFunctionUseDefaultRadix = 0 + +; VSIM Startup command +; Startup = do startup.do + +; VSIM Shutdown file +; Filename to save u/i formats and configurations. +; ShutdownFile = restart.do +; To explicitly disable auto save: +; ShutdownFile = --disable-auto-save + +; Run simulator in batch mode as if -batch were specified on the command line if none of -c, -gui, or -i specified. +; Simulator runs in interactive mode as if -i were specified if this option is 0. Default is 0. +; BatchMode = 1 + +; File for saving command transcript when -batch option used +; This option is ignored when -c, -gui, or -i options are used or if BatchMode above is zero +; default is unset so command transcript only goes to stdout for better performance +; BatchTranscriptFile = transcript + +; File for saving command transcript, this option is ignored when -batch option is used +TranscriptFile = transcript + +; Transcript file long line wrapping mode(s) +; mode == 0 :: no wrapping, line recorded as is +; mode == 1 :: wrap at first whitespace after WSColumn +; or at Column. +; mode == 2 :: wrap as above, but add continuation +; character ('\') at end of each wrapped line +; +; WrapMode = 0 +; WrapColumn = 30000 +; WrapWSColumn = 27000 + +; File for saving command history +; CommandHistory = cmdhist.log + +; Specify whether paths in simulator commands should be described +; in VHDL or Verilog format. +; For VHDL, PathSeparator = / +; For Verilog, PathSeparator = . +; Must not be the same character as DatasetSeparator. +PathSeparator = / + +; Specify the dataset separator for fully rooted contexts. +; The default is ':'. For example: sim:/top +; Must not be the same character as PathSeparator. +DatasetSeparator = : + +; Specify a unique path separator for the Signal Spy set of functions. +; The default will be to use the PathSeparator variable. +; Must not be the same character as DatasetSeparator. +; SignalSpyPathSeparator = / + +; Used to control parsing of HDL identifiers input to the tool. +; This includes CLI commands, vsim/vopt/vlog/vcom options, +; string arguments to FLI/VPI/DPI calls, etc. +; If set to 1, accept either Verilog escaped Id syntax or +; VHDL extended id syntax, regardless of source language. +; If set to 0, the syntax of the source language must be used. +; Each identifier in a hierarchical name may need different syntax, +; e.g. "/top/\vhdl*ext*id\/middle/\vlog*ext*id /bottom" or +; "top.\vhdl*ext*id\.middle.\vlog*ext*id .bottom" +; GenerousIdentifierParsing = 1 + +; Disable VHDL assertion messages +; IgnoreNote = 1 +; IgnoreWarning = 1 +; IgnoreError = 1 +; IgnoreFailure = 1 + +; Disable SystemVerilog assertion messages +; IgnoreSVAInfo = 1 +; IgnoreSVAWarning = 1 +; IgnoreSVAError = 1 +; IgnoreSVAFatal = 1 + +; Do not print any additional information from Severity System tasks. +; Only the message provided by the user is printed along with severity +; information. +; SVAPrintOnlyUserMessage = 1; + +; Default force kind. May be freeze, drive, deposit, or default +; or in other terms, fixed, wired, or charged. +; A value of "default" will use the signal kind to determine the +; force kind, drive for resolved signals, freeze for unresolved signals +; DefaultForceKind = freeze + +; Control the iteration of events when a VHDL signal is forced to a value +; This flag can be set to honour the signal update event in next iteration, +; the default is to update and propagate in the same iteration. +; ForceSigNextIter = 1 + +; Enable simulation statistics. Specify one or more arguments: +; [all,none,time,cmd,msg,perf,verbose,list,kb,eor] +; Add '-' to disable specific statistics. Default is [time,cmd,msg]. +; Stats = time,cmd,msg + +; If zero, open files when elaborated; otherwise, open files on +; first read or write. Default is 0. +; DelayFileOpen = 1 + +; Control VHDL files opened for write. +; 0 = Buffered, 1 = Unbuffered +UnbufferedOutput = 0 + +; Control the number of VHDL files open concurrently. +; This number should always be less than the current ulimit +; setting for max file descriptors. +; 0 = unlimited +ConcurrentFileLimit = 40 + +; If nonzero, close files as soon as there is either an explicit call to +; file_close, or when the file variable's scope is closed. When zero, a +; file opened in append mode is not closed in case it is immediately +; reopened in append mode; otherwise, the file will be closed at the +; point it is reopened. +; AppendClose = 1 + +; Control the number of hierarchical regions displayed as +; part of a signal name shown in the Wave window. +; A value of zero tells VSIM to display the full name. +; The default is 0. +; WaveSignalNameWidth = 0 + +; Turn off warnings when changing VHDL constants and generics +; Default is 1 to generate warning messages +; WarnConstantChange = 0 + +; Turn off warnings from accelerated versions of the std_logic_arith, +; std_logic_unsigned, and std_logic_signed packages. +; StdArithNoWarnings = 1 + +; Turn off warnings from accelerated versions of the IEEE numeric_std +; and numeric_bit packages. +; NumericStdNoWarnings = 1 + +; Use old-style (pre-6.6) VHDL FOR GENERATE statement iteration names +; in the design hierarchy. +; This style is controlled by the value of the GenerateFormat +; value described next. Default is to use new-style names, which +; comprise the generate statement label, '(', the value of the generate +; parameter, and a closing ')'. +; Set this to 1 to use old-style names. +; OldVhdlForGenNames = 1 + +; Control the format of the old-style VHDL FOR generate statement region +; name for each iteration. Do not quote the value. +; The format string here must contain the conversion codes %s and %d, +; in that order, and no other conversion codes. The %s represents +; the generate statement label; the %d represents the generate parameter value +; at a particular iteration (this is the position number if the generate parameter +; is of an enumeration type). Embedded whitespace is allowed (but discouraged); +; leading and trailing whitespace is ignored. +; Application of the format must result in a unique region name over all +; loop iterations for a particular immediately enclosing scope so that name +; lookup can function properly. The default is %s__%d. +; GenerateFormat = %s__%d + +; Enable more efficient logging of VHDL Variables. +; Logging VHDL variables without this enabled, while possible, is very +; inefficient. Enabling this will provide a more efficient logging methodology +; at the expense of more memory usage. By default this feature is disabled (0). +; To enabled this feature, set this variable to 1. +; VhdlVariableLogging = 1 + +; Enable logging of VHDL access type variables and their designated objects. +; This setting will allow both variables of an access type ("access variables") +; and their designated objects ("access objects") to be logged. Logging a +; variable of an access type will automatically also cause the designated +; object(s) of that variable to be logged as the simulation progresses. +; Further, enabling this allows access objects to be logged by name. By default +; this feature is disabled (0). To enable this feature, set this variable to 1. +; Enabling this will automatically enable the VhdlVariableLogging feature also. +; AccessObjDebug = 1 + +; Make each VHDL package in a PDU has its own separate copy of the package instead +; of sharing the package between PDUs. The default is to share packages. +; To ensure that each PDU has its own set of packages, set this variable to 1. +; VhdlSeparatePduPackage = 1 + +; Specify whether checkpoint files should be compressed. +; The default is 1 (compressed). +; CheckpointCompressMode = 0 + +; Specify gcc compiler used in the compilation of automatically generated DPI exportwrapper. +; Use custom gcc compiler located at this path rather than the default path. +; The path should point directly at a compiler executable. +; DpiCppPath = /bin/gcc +; +; Specify the compiler version from the list of support GNU compilers. +; examples 4.5.0, 4.7.4 +; DpiCppInstall = 4.7.4 + +; Specify whether to enable SystemVerilog DPI "out-of-the-blue" calls. +; The term "out-of-the-blue" refers to SystemVerilog export function calls +; made from C functions that don't have the proper context setup +; (as is the case when running under "DPI-C" import functions). +; When this is enabled, one can call a DPI export function +; (but not task) from any C code. +; the setting of this variable can be one of the following values: +; 0 : dpioutoftheblue call is disabled (default) +; 1 : dpioutoftheblue call is enabled, but export call debug support is not available. +; 2 : dpioutoftheblue call is enabled, and limited export call debug support is available. +; DpiOutOfTheBlue = 1 + +; Specify whether continuous assignments are run before other normal priority +; processes scheduled in the same iteration. This event ordering minimizes race +; differences between optimized and non-optimized designs, and is the default +; behavior beginning with the 6.5 release. For pre-6.5 event ordering, set +; ImmediateContinuousAssign to 0. +; The default is 1 (enabled). +; ImmediateContinuousAssign = 0 + +; List of dynamically loaded objects for Verilog PLI applications +; Veriuser = veriuser.sl + +; Which default VPI object model should the tool conform to? +; The 1364 modes are Verilog-only, for backwards compatibility with older +; libraries, and SystemVerilog objects are not available in these modes. +; +; In the absence of a user-specified default, the tool default is the +; latest available LRM behavior. +; Options for PliCompatDefault are: +; VPI_COMPATIBILITY_VERSION_1364v1995 +; VPI_COMPATIBILITY_VERSION_1364v2001 +; VPI_COMPATIBILITY_VERSION_1364v2005 +; VPI_COMPATIBILITY_VERSION_1800v2005 +; VPI_COMPATIBILITY_VERSION_1800v2008 +; +; Synonyms for each string are also recognized: +; VPI_COMPATIBILITY_VERSION_1364v1995 (1995, 95, 1364v1995, 1364V1995, VL1995) +; VPI_COMPATIBILITY_VERSION_1364v2001 (2001, 01, 1364v2001, 1364V2001, VL2001) +; VPI_COMPATIBILITY_VERSION_1364v2005 (1364v2005, 1364V2005, VL2005) +; VPI_COMPATIBILITY_VERSION_1800v2005 (2005, 05, 1800v2005, 1800V2005, SV2005) +; VPI_COMPATIBILITY_VERSION_1800v2008 (2008, 08, 1800v2008, 1800V2008, SV2008) + + +; PliCompatDefault = VPI_COMPATIBILITY_VERSION_1800v2005 + +; Specify whether the Verilog system task $fopen or vpi_mcd_open() +; will create directories that do not exist when opening the file +; in "a" or "w" mode. +; The default is 0 (do not create non-existent directories) +; CreateDirForFileAccess = 1 + +; Specify default options for the restart command. Options can be one +; or more of: -force -nobreakpoint -nolist -nolog -nowave -noassertions +; DefaultRestartOptions = -force + + +; Specify default UVM-aware debug options if the vsim -uvmcontrol switch is not used. +; Valid options include: all, none, verbose, disable, struct, reseed, msglog, trlog, certe. +; Options can be enabled by just adding the name, or disabled by prefixing the option with a "-". +; The list of options must be delimited by commas, without spaces or tabs. +; +; Some examples +; To turn on all available UVM-aware debug features: +; UVMControl = all +; To turn on the struct window, mesage logging, and transaction logging: +; UVMControl = struct,msglog,trlog +; To turn on all options except certe: +; UVMControl = all,-certe +; To completely disable all UVM-aware debug functionality: +; UVMControl = disable + +; Specify the WildcardFilter setting. +; A space separated list of object types to be excluded when performing +; wildcard matches with log, wave, etc commands. The default value for this variable is: +; "Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile" +; See "Using the WildcardFilter Preference Variable" in the documentation for +; details on how to use this variable and for descriptions of the filter types. +WildcardFilter = Variable Constant Generic Parameter SpecParam Memory Assertion Cover Endpoint ScVariable CellInternal ImmediateAssert VHDLFile + +; Specify the WildcardSizeThreshold setting. +; This integer setting specifies the size at which objects will be excluded when +; performing wildcard matches with log, wave, etc commands. Objects of size equal +; to or greater than the WildcardSizeThreshold will be filtered out from the wildcard +; matches. The size is a simple calculation of number of bits or items in the object. +; The default value is 8k (8192). Setting this value to 0 will disable the checking +; of object size against this threshold and allow all objects of any size to be logged. +WildcardSizeThreshold = 8192 + +; Specify whether warning messages are output when objects are filtered out due to the +; WildcardSizeThreshold. The default is 0 (no messages generated). +WildcardSizeThresholdVerbose = 0 + +; Turn on (1) or off (0) WLF file compression. +; The default is 1 (compress WLF file). +; WLFCompress = 0 + +; Specify whether to save all design hierarchy (1) in the WLF file +; or only regions containing logged signals (0). +; The default is 0 (save only regions with logged signals). +; WLFSaveAllRegions = 1 + +; WLF file time limit. Limit WLF file by time, as closely as possible, +; to the specified amount of simulation time. When the limit is exceeded +; the earliest times get truncated from the file. +; If both time and size limits are specified the most restrictive is used. +; UserTimeUnits are used if time units are not specified. +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} +; WLFTimeLimit = 0 + +; WLF file size limit. Limit WLF file size, as closely as possible, +; to the specified number of megabytes. If both time and size limits +; are specified then the most restrictive is used. +; The default is 0 (no limit). +; WLFSizeLimit = 1000 + +; Specify whether or not a WLF file should be deleted when the +; simulation ends. A value of 1 will cause the WLF file to be deleted. +; The default is 0 (do not delete WLF file when simulation ends). +; WLFDeleteOnQuit = 1 + +; Specify whether or not a WLF file should be optimized during +; simulation. If set to 0, the WLF file will not be optimized. +; The default is 1, optimize the WLF file. +; WLFOptimize = 0 + +; Specify the name of the WLF file. +; The default is vsim.wlf +; WLFFilename = vsim.wlf + +; Specify whether to lock the WLF file. +; Locking the file prevents other invocations of ModelSim/Questa tools from +; inadvertently overwriting the WLF file. +; The default is 1, lock the WLF file. +; WLFFileLock = 0 + +; Specify the update interval for the WLF file in live simulation. +; The interval is given in seconds. +; The value is the smallest interval between WLF file updates. The WLF file +; will be flushed (updated) after (at least) the interval has elapsed, ensuring +; that the data is correct when viewed from a separate viewer. +; A value of 0 means that no updating will occur. +; The default value is 10 seconds. +; WLFUpdateInterval = 10 + +; Specify the WLF cache size limit for WLF files. +; The value is given in megabytes. A value of 0 turns off the cache. +; On non-Windows platforms the default WLFCacheSize setting is 2000 (megabytes). +; On Windows, the default value is 1000 (megabytes) to help to avoid filling +; process memory. +; WLFSimCacheSize allows a different cache size to be set for a live simulation +; WLF file, independent of post-simulation WLF file viewing. If WLFSimCacheSize +; is not set, it defaults to the WLFCacheSize value. +; WLFCacheSize = 2000 +; WLFSimCacheSize = 500 + +; Specify the WLF file event collapse mode. +; 0 = Preserve all events and event order. (same as -wlfnocollapse) +; 1 = Only record values of logged objects at the end of a simulator iteration. +; (same as -wlfcollapsedelta) +; 2 = Only record values of logged objects at the end of a simulator time step. +; (same as -wlfcollapsetime) +; The default is 1. +; WLFCollapseMode = 0 + +; Specify whether WLF file logging can use threads on multi-processor machines. +; If 0, no threads will be used; if 1, threads will be used if the system has +; more than one processor. +; WLFUseThreads = 1 + +; Specify the size of objects that will trigger "large object" messages +; at log/wave/list time. The size calculation of the object is the same as that +; used by the WildcardSizeThreshold. The default LargeObjectSize size is 500,000. +; Setting LargeObjectSize to 0 will disable these messages. +; LargeObjectSize = 500000 + +; Specify the depth of stack frames returned by $stacktrace([level]). +; This depth will be picked up when the optional 'level' argument +; is not specified or its value is not a positive integer. +; StackTraceDepth = 100 + +; Turn on/off undebuggable SystemC type warnings. Default is on. +; ShowUndebuggableScTypeWarning = 0 + +; Turn on/off unassociated SystemC name warnings. Default is off. +; ShowUnassociatedScNameWarning = 1 + +; Turn on/off SystemC IEEE 1666 deprecation warnings. Default is off. +; ScShowIeeeDeprecationWarnings = 1 + +; Turn on/off the check for multiple drivers on a SystemC sc_signal. Default is off. +; For SystemC-2.3.2 the valid values are 0,1 and 2 +; 0 = SC_SIGNAL_WRITE_CHECK_DISABLE_ +; 1 = SC_SIGNAL_WRITE_CHECK_DEFAULT_ +; 2 = SC_SIGNAL_WRITE_CHECK_CONFLICT_ +; For SystemC-2.2 the valid values are 0 and 1 +; 0 = DISABLE +; 1 = ENABLE +; ScEnableScSignalWriteCheck = 1 + +; Set SystemC default time unit. +; Set to fs, ps, ns, us, ms, or sec with optional +; prefix of 1, 10, or 100. The default is 1 ns. +; The ScTimeUnit value is honored if it is coarser than Resolution. +; If ScTimeUnit is finer than Resolution, it is set to the value +; of Resolution. For example, if Resolution is 100ps and ScTimeUnit is ns, +; then the default time unit will be 1 ns. However if Resolution +; is 10 ns and ScTimeUnit is ns, then the default time unit will be 10 ns. +ScTimeUnit = ns + +; Set SystemC sc_main stack size. The stack size is set as an integer +; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or +; Gb(Giga-byte). Default is 10 Mb. The stack size for sc_main depends +; on the amount of data on the sc_main() stack and the memory required +; to succesfully execute the longest function call chain of sc_main(). +ScMainStackSize = 10 Mb + +; Set SystemC thread stack size. The stack size is set as an integer +; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or +; Gb(Giga-byte). The stack size for sc_thread depends +; on the amount of data on the sc_thread stack and the memory required +; to succesfully execute the thread. +; ScStackSize = 1 Mb + +; Turn on/off execution of remainder of sc_main upon quitting the current +; simulation session. If the cumulative length of sc_main() in terms of +; simulation time units is less than the length of the current simulation +; run upon quit or restart, sc_main() will be in the middle of execution. +; This switch gives the option to execute the remainder of sc_main upon +; quitting simulation. The drawback of not running sc_main till the end +; is memory leaks for objects created by sc_main. If on, the remainder of +; sc_main will be executed ignoring all delays. This may cause the simulator +; to crash if the code in sc_main is dependent on some simulation state. +; Default is on. +ScMainFinishOnQuit = 1 + +; Enable calling of the DPI export taks/functions from the +; SystemC start_of_simulation() callback. +; The default is off. +; EnableDpiSosCb = 1 + + +; Set the SCV relationship name that will be used to identify phase +; relations. If the name given to a transactor relation matches this +; name, the transactions involved will be treated as phase transactions +ScvPhaseRelationName = mti_phase + +; Customize the vsim kernel shutdown behavior at the end of the simulation. +; Some common causes of the end of simulation are $finish (implicit or explicit), +; sc_stop(), tf_dofinish(), and assertion failures. +; This should be set to "ask", "exit", or "stop". The default is "ask". +; "ask" -- In batch mode, the vsim kernel will abruptly exit. +; In GUI mode, a dialog box will pop up and ask for user confirmation +; whether or not to quit the simulation. +; "stop" -- Cause the simulation to stay loaded in memory. This can make some +; post-simulation tasks easier. +; "exit" -- The simulation will abruptly exit without asking for any confirmation. +; "final" -- Run SystemVerilog final blocks then behave as "stop". +; Note: This variable can be overridden with the vsim "-onfinish" command line switch. +OnFinish = ask + +; Print pending deferred assertion messages. +; Deferred assertion messages may be scheduled after the $finish in the same +; time step. Deferred assertions scheduled to print after the $finish are +; printed before exiting with severity level NOTE since it's not known whether +; the assertion is still valid due to being printed in the active region +; instead of the reactive region where they are normally printed. +; OnFinishPendingAssert = 1; + +; Print "simstats" result. Default is 0. +; 0 == do not print simstats +; 1 == print at end of simulation +; 2 == print at end of each run command and end of simulation +; PrintSimStats = 1 + +; Assertion File - alternate file for storing VHDL/PSL/Verilog assertion messages +; AssertFile = assert.log + +; Enable assertion counts. Default is off. +; AssertionCounts = 1 + +; Run simulator in assertion debug mode. Default is off. +; AssertionDebug = 1 + +; Turn on/off PSL/SVA/VHDL assertion enable. Default is on. +; AssertionEnable = 0 + +; Set PSL/SVA/VHDL concurrent assertion fail limit. Default is -1. +; Any positive integer, -1 for infinity. +; AssertionLimit = 1 + +; Turn on/off concurrent assertion pass log. Default is off. +; Assertion pass logging is only enabled when assertion is browseable +; and assertion debug is enabled. +; AssertionPassLog = 1 + +; Turn on/off PSL concurrent assertion fail log. Default is on. +; The flag does not affect SVA +; AssertionFailLog = 0 + +; Turn on/off SVA concurrent assertion local var printing in -assertdebug mode. Default is on. +; AssertionFailLocalVarLog = 0 + +; Set action type for PSL/SVA concurrent assertion fail action. Default is continue. +; 0 = Continue 1 = Break 2 = Exit +; AssertionFailAction = 1 + +; Enable the active thread monitor in the waveform display when assertion debug is enabled. +; AssertionActiveThreadMonitor = 1 + +; Control how many waveform rows will be used for displaying the active threads. Default is 5. +; AssertionActiveThreadMonitorLimit = 5 + +; Assertion thread limit after which assertion would be killed/switched off. +; The default is -1 (unlimited). If the number of threads for an assertion go +; beyond this limit, the assertion would be either switched off or killed. This +; limit applies to only assert directives. +;AssertionThreadLimit = -1 + +; Action to be taken once the assertion thread limit is reached. Default +; is kill. It can have a value of off or kill. In case of kill, all the existing +; threads are terminated and no new attempts are started. In case of off, the +; existing attempts keep on evaluating but no new attempts are started. This +; variable applies to only assert directives. +;AssertionThreadLimitAction = kill + +; Cover thread limit after which cover would be killed/switched off. +; The default is -1 (unlimited). If the number of threads for a cover go +; beyond this limit, the cover would be either switched off or killed. This +; limit applies to only cover directives. +;CoverThreadLimit = -1 + +; Action to be taken once the cover thread limit is reached. Default +; is kill. It can have a value of off or kill. In case of kill, all the existing +; threads are terminated and no new attempts are started. In case of off, the +; existing attempts keep on evaluating but no new attempts are started. This +; variable applies to only cover directives. +;CoverThreadLimitAction = kill + + +; By default immediate assertions do not participate in Assertion Coverage calculations +; unless they are executed. This switch causes all immediate assertions in the design +; to participate in Assertion Coverage calculations, whether attempted or not. +; UnattemptedImmediateAssertions = 0 + +; By default immediate covers participate in Coverage calculations +; whether they are attempted or not. This switch causes all unattempted +; immediate covers in the design to stop participating in Coverage +; calculations. +; UnattemptedImmediateCovers = 0 + +; By default pass action block is not executed for assertions on vacuous +; success. The following variable is provided to enable execution of +; pass action block on vacuous success. The following variable is only effective +; if the user does not disable pass action block execution by using either +; system tasks or CLI. Also there is a performance penalty for enabling +; the following variable. +;AssertionEnableVacuousPassActionBlock = 1 + +; As per strict 1850-2005 PSL LRM, an always property can either pass +; or fail. However, by default, Questa reports multiple passes and +; multiple fails on top always/never property (always/never operator +; is the top operator under Verification Directive). The reason +; being that Questa reports passes and fails on per attempt of the +; top always/never property. Use the following flag to instruct +; Questa to strictly follow LRM. With this flag, all assert/never +; directives will start an attempt once at start of simulation. +; The attempt can either fail, match or match vacuously. +; For e.g. if always is the top operator under assert, the always will +; keep on checking the property at every clock. If the property under +; always fails, the directive will be considered failed and no more +; checking will be done for that directive. A top always property, +; if it does not fail, will show a pass at end of simulation. +; The default value is '0' (i.e. zero is off). For example: +; PslOneAttempt = 1 + +; Specify the number of clock ticks to represent infinite clock ticks. +; This affects eventually!, until! and until_!. If at End of Simulation +; (EOS) an active strong-property has not clocked this number of +; clock ticks then neither pass or fail (vacuous match) is returned +; else respective fail/pass is returned. The default value is '0' (zero) +; which effectively does not check for clock tick condition. For example: +; PslInfinityThreshold = 5000 + +; Control how many thread start times will be preserved for ATV viewing for a given assertion +; instance. Default is -1 (ALL). +; ATVStartTimeKeepCount = -1 + +; Turn on/off code coverage +; CodeCoverage = 0 + +; This option applies to condition and expression coverage UDP tables. It +; has no effect unless UDP is enabled for coverage with vcom/vlog/vopt -coverudp. +; If this option is used and a match occurs in more than one row in the UDP table, +; none of the counts for all matching rows is incremented. By default, counts are +; incremented for all matching rows. +; CoverCountAll = 1 + +; Turn off automatic inclusion of VHDL integers in toggle coverage. Default +; is to include them. +; ToggleNoIntegers = 1 + +; Set the maximum number of values that are collected for toggle coverage of +; VHDL integers. Default is 100; +; ToggleMaxIntValues = 100 + +; Set the maximum number of values that are collected for toggle coverage of +; Verilog real. Default is 100; +; ToggleMaxRealValues = 100 + +; Turn on automatic inclusion of Verilog integers in toggle coverage, except +; for enumeration types. Default is to include them. +; ToggleVlogIntegers = 0 + +; Turn on automatic inclusion of Verilog real type in toggle coverage, except +; for shortreal types. Default is to not include them. +; ToggleVlogReal = 1 + +; Turn on automatic inclusion of Verilog fixed-size unpacked arrays, VHDL multi-d arrays +; and VHDL arrays-of-arrays in toggle coverage. +; Default is to not include them. +; ToggleFixedSizeArray = 1 + +; Increase or decrease the maximum size of Verilog unpacked fixed-size arrays, +; VHDL multi-d arrays and VHDL arrays-of-arrays that are included for toggle coverage. +; This leads to a longer simulation time with bigger arrays covered with toggle coverage. +; Default is 1024. +; ToggleMaxFixedSizeArray = 1024 + +; Treat Verilog multi-dimensional packed vectors and packed structures as equivalently sized +; one-dimensional packed vectors for toggle coverage. Default is 0. +; TogglePackedAsVec = 0 + +; Treat Verilog enumerated types as equivalently sized one-dimensional packed vectors for +; toggle coverage. Default is 0. +; ToggleVlogEnumBits = 0 + +; Turn off automatic inclusion of VHDL records in toggle coverage. +; Default is to include them. +; ToggleVHDLRecords = 0 + +; Limit the widths of registers automatically tracked for toggle coverage. Default is 128. +; For unlimited width, set to 0. +; ToggleWidthLimit = 128 + +; Limit the counts that are tracked for toggle coverage. When all edges for a bit have +; reached this count, further activity on the bit is ignored. Default is 1. +; For unlimited counts, set to 0. +; ToggleCountLimit = 1 + +; Change the mode of extended toggle coverage. Default is 3. Valid modes are 1, 2 and 3. +; Following is the toggle coverage calculation criteria based on extended toggle mode: +; Mode 1: 0L->1H & 1H->0L & any one 'Z' transition (to/from 'Z'). +; Mode 2: 0L->1H & 1H->0L & one transition to 'Z' & one transition from 'Z'. +; Mode 3: 0L->1H & 1H->0L & all 'Z' transitions. +; ExtendedToggleMode = 3 + +; Enable toggle statistics collection only for ports. Default is 0. +; TogglePortsOnly = 1 + +; Limit the counts that are tracked for Focussed Expression Coverage. When a bin has +; reached this count, further tracking of the input patterns linked to it is ignored. +; Default is 1. For unlimited counts, set to 0. +; NOTE: Changing this value from its default value may affect simulation performance. +; FecCountLimit = 1 + +; Limit the counts that are tracked for UDP Coverage. When a bin has +; reached this count, further tracking of the input patterns linked to it is ignored. +; Default is 1. For unlimited counts, set to 0. +; NOTE: Changing this value from its default value may affect simulation performance. +; UdpCountLimit = 1 + +; Control toggle coverage deglitching period. A period of 0, eliminates delta +; cycle glitches. This is the default. The value of ToggleDeglitchPeriod needs to be either +; 0 or a time string that includes time units. Examples: 0 or 10.0ps or "10.0 ps". +; ToggleDeglitchPeriod = 10.0ps + +; Turn on/off all PSL/SVA cover directive enables. Default is on. +; CoverEnable = 0 + +; Turn on/off PSL/SVA cover log. Default is off "0". +; CoverLog = 1 + +; Set "at_least" value for all PSL/SVA cover directives. Default is 1. +; CoverAtLeast = 2 + +; Set "limit" value for all PSL/SVA cover directives. Default is -1. +; Any positive integer, -1 for infinity. +; CoverLimit = 1 + +; Specify the coverage database filename. +; Default is "" (i.e. database is NOT automatically saved on close). +; UCDBFilename = vsim.ucdb + +; Specify the maximum limit for the number of Cross (bin) products reported +; in XML and UCDB report against a Cross. A warning is issued if the limit +; is crossed. Default is zero. vsim switch -cvgmaxrptrhscross can override this +; setting. +; MaxReportRhsSVCrossProducts = 1000 + +; Specify the override for the "auto_bin_max" option for the Covergroups. +; If not specified then value from Covergroup "option" is used. +; SVCoverpointAutoBinMax = 64 + +; Specify the override for the value of "cross_num_print_missing" +; option for the Cross in Covergroups. If not specified then value +; specified in the "option.cross_num_print_missing" is used. This +; is a runtime option. NOTE: This overrides any "cross_num_print_missing" +; value specified by user in source file and any SVCrossNumPrintMissingDefault +; specified in modelsim.ini. +; SVCrossNumPrintMissing = 0 + +; Specify whether to use the value of "cross_num_print_missing" +; option in report and GUI for the Cross in Covergroups. If not specified then +; cross_num_print_missing is ignored for creating reports and displaying +; covergroups in GUI. Default is 0, which means ignore "cross_num_print_missing". +; UseSVCrossNumPrintMissing = 0 + +; Specify the threshold of Coverpoint wildcard bin value range size, above which +; a warning will be triggered. The default is 4K -- 12 wildcard bits. +; SVCoverpointWildCardBinValueSizeWarn = 4096 + +; Specify the override for the value of "strobe" option for the +; Covergroup Type. If not specified then value in "type_option.strobe" +; will be used. This is runtime option which forces "strobe" to +; user specified value and supersedes user specified values in the +; SystemVerilog Code. NOTE: This also overrides the compile time +; default value override specified using "SVCovergroupStrobeDefault" +; SVCovergroupStrobe = 0 + +; Override for explicit assignments in source code to "option.goal" of +; SystemVerilog covergroup, coverpoint, and cross. It also overrides the +; default value of "option.goal" (defined to be 100 in the SystemVerilog +; LRM) and the value of modelsim.ini variable "SVCovergroupGoalDefault". +; SVCovergroupGoal = 100 + +; Override for explicit assignments in source code to "type_option.goal" of +; SystemVerilog covergroup, coverpoint, and cross. It also overrides the +; default value of "type_option.goal" (defined to be 100 in the SystemVerilog +; LRM) and the value of modelsim.ini variable "SVCovergroupTypeGoalDefault". +; SVCovergroupTypeGoal = 100 + +; Enforce the 6.3 behavior of covergroup get_coverage() and get_inst_coverage() +; builtin functions, and report. This setting changes the default values of +; option.get_inst_coverage and type_option.merge_instances to ensure the 6.3 +; behavior if explicit assignments are not made on option.get_inst_coverage and +; type_option.merge_instances by the user. There are two vsim command line +; options, -cvg63 and -nocvg63 to override this setting from vsim command line. +; The default value of this variable from release 6.6 onwards is 0. This default +; drives compliance with the clarified behavior in the IEEE 1800-2009 standard. +; SVCovergroup63Compatibility = 0 + +; Enforce the default behavior of covergroup get_coverage() builtin function, GUI +; and report. This variable sets the default value of type_option.merge_instances. +; There are two vsim command line options, -cvgmergeinstances and +; -nocvgmergeinstances to override this setting from vsim command line. +; The default value of this variable, -1 (don't care), allows the tool to determine +; the effective value, based on factors related to capacity and optimization. +; The type_option.merge_instances appears in the GUI and coverage reports as either +; auto(1) or auto(0), depending on whether the effective value was determined to +; be a 1 or a 0. +; SVCovergroupMergeInstancesDefault = -1 + +; Enable or disable generation of more detailed information about the sampling +; of covergroup, cross, and coverpoints. It provides the details of the number +; of times the covergroup instance and type were sampled, as well as details +; about why covergroup, cross and coverpoint were not covered. A non-zero value +; is to enable this feature. 0 is to disable this feature. Default is 0 +; SVCovergroupSampleInfo = 0 + +; Specify the maximum number of Coverpoint bins in whole design for +; all Covergroups. +; MaxSVCoverpointBinsDesign = 2147483648 + +; Specify maximum number of Coverpoint bins in any instance of a Covergroup, default is 2^10 bins +; MaxSVCoverpointBinsInst = 1048576 + +; Specify the maximum number of Cross bins in whole design for +; all Covergroups. +; MaxSVCrossBinsDesign = 2147483648 + +; Specify maximum number of Cross bins in any instance of a Covergroup, default is 2^16 bins +; MaxSVCrossBinsInst = 67108864 + +; Specify whether vsim will collect the coverage data of zero-weight coverage items or not. +; By default, this variable is set 0, in which case option.no_collect setting will take effect. +; If this variable is set to 1, all zero-weight coverage items will not be saved. +; Note that the usage of vsim switch -cvgzwnocollect, if present, will override the setting +; of this variable. +; CvgZWNoCollect = 1 + +; Specify a space delimited list of double quoted TCL style +; regular expressions which will be matched against the text of all messages. +; If any regular expression is found to be contained within any message, the +; status for that message will not be propagated to the UCDB TESTSTATUS. +; If no match is detected, then the status will be propagated to the +; UCDB TESTSTATUS. More than one such regular expression text is allowed, +; and each message text is compared for each regular expression in the list. +; UCDBTestStatusMessageFilter = "Done with Test Bench" "Ignore .* message" + +; Set weight for all PSL/SVA cover directives. Default is 1. +; CoverWeight = 2 + +; Check vsim plusargs. Default is 0 (off). +; 0 = Don't check plusargs +; 1 = Warning on unrecognized plusarg +; 2 = Error and exit on unrecognized plusarg +; CheckPlusargs = 1 + +; Load the specified shared objects with the RTLD_GLOBAL flag. +; This gives global visibility to all symbols in the shared objects, +; meaning that subsequently loaded shared objects can bind to symbols +; in the global shared objects. The list of shared objects should +; be whitespace delimited. This option is not supported on the +; Windows or AIX platforms. +; GlobalSharedObjectList = example1.so example2.so example3.so + +; Generate the stub definitions for the undefined symbols in the shared libraries being +; loaded in the simulation. When this flow is turned on, the undefined symbols will not +; prevent vsim from loading. Calling undefined symbols at runtime will cause fatal error. +; The valid arguments are: on, off, verbose. +; on : turn on the automatic generation of stub definitions. +; off: turn off the flow. The undefined symbols will trigger an immediate load failure. +; verbose: Turn on the flow and report the undefined symbols for each shared library. +; NOTE: This variable can be overriden with vsim switch "-undefsyms". +; The default is on. +; +; UndefSyms = off + +; Enable the support for checkpointing foreign C++ libraries. +; The valid arguments are: 1 and 0. +; 1 : turn on the support +; 0 : turn off the support (default) +; This option is not supported on the Windows platforms. +; +; AllowCheckpointCpp = 1 + +; Initial seed for the random number generator of the root thread (SystemVerilog). +; NOTE: This variable can be overridden with the vsim "-sv_seed" command line switch. +; The default value is 0. +; Sv_Seed = 0 + +; Specify the solver "engine" that vsim will select for constrained random +; generation. +; Valid values are: +; "auto" - automatically select the best engine for the current +; constraint scenario +; "bdd" - evaluate all constraint scenarios using the BDD solver engine +; "act" - evaluate all constraint scenarios using the ACT solver engine +; While the BDD solver engine is generally efficient with constraint scenarios +; involving bitwise logical relationships, the ACT solver engine can exhibit +; superior performance with constraint scenarios involving large numbers of +; random variables related via arithmetic operators (+, *, etc). +; NOTE: This variable can be overridden with the vsim "-solveengine" command +; line switch. +; The default value is "auto". +; SolveEngine = auto + +; Specifies the maximum size that a dynamic array may be resized to by the +; solver. If the solver attempts to resize a dynamic array to a size greater +; than the specified limit, the solver will abort with an error. +; The default value is 10000. A value of 0 indicates no limit. +; SolveArrayResizeMax = 10000 + +; Specify error message severity when randomize() and randomize(null) failures +; are detected. +; +; Integer value up to two digits are allowed with each digit having the following legal values: +; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal +; +; 1) When a value with two digits is used, the digit at tenth place (leftmost digit) represents +; the severtity setting for normal randomize() calls. The digit at ones place (rightmost digit) +; represents the setting for randomize(null) calls. +; +; 2) When a single digit value is used, the setting is applied to both normal randomize() call +; and randomize(null) call. +; +; Example: Fatal error for randomize() failures and NO error for randomize(null) failures +; -solvefailseverity=40 +; +; NOTE: SolveFailSeverity can affect the behavior of SolveFailDebug. When SolveFailDebug is +; enabled, a constraint contradiction report will be displayed for randomize() calls that +; have a message severity >= warning (i.e. constraint contradiction reports will not be +; generated for randomize() calls having a "no error" severity level) +; +; NOTE: This variable can be overridden with the vsim "-solvefailseverity" command +; line switch. +; +; The default is 1 (warning). +; SolveFailSeverity = 1 + +; Error message severity for suppressible errors that are detected in a +; solve/before constraint. +; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal +; NOTE: This variable can be overridden with the vsim "-solvebeforeerrorseverity" +; command line switch. +; The default is 3 (failure). +; SolveBeforeErrorSeverity = 3 + +; Error message severity for suppressible errors that are related to +; solve engine capacity limits +; 0 = No error 1 = Warning 2 = Error 3 = Failure 4 = Fatal +; NOTE: This variable can be overridden with the vsim "-solveengineerrorseverity" +; command line switch. +; The default is 3 (failure). +; SolveEngineErrorSeverity = 3 + +; Enable/disable constraint conflicts on randomize() failure +; Valid values: +; 0 - disable solvefaildebug +; 1 - basic debug (no performance penalty) +; 2 - enhanced debug (runtime performance penalty) +; +; NOTE: SolveFailSeverity can affect the behavior of SolveFailDebug. When SolveFailDebug is +; enabled, a constraint contradiction report will be displayed for randomize() calls that +; have a message severity >= warning (i.e. constraint contradiction reports will not be +; generated for randomize() calls having a "no error" severity level) +; +; NOTE: This variable can be overridden with the vsim "-solvefaildebug" command +; line switch. +; +; The default is 1 (basic debug). +; SolveFailDebug = 1 + +; Upon encountering a randomize() failure, generate a simplified testcase that +; will reproduce the failure. Optionally output the testcase to a file. +; Testcases for 'no-solution' failures will only be produced if SolveFailDebug +; is enabled (see above). +; NOTE: This variable can be overridden with the vsim "-solvefailtestcase" +; command line switch. +; The default is OFF (do not generate a testcase). To enable testcase +; generation, uncomment this variable. To redirect testcase generation to a +; file, specify the name of the output file. +; SolveFailTestcase = + +; Specify solver timeout threshold (in seconds). randomize() will fail if the +; CPU time required to evaluate any randset exceeds the specified timeout. +; The default value is 500. A value of 0 will disable timeout failures. +; SolveTimeout = 500 + +; Specify the maximum size of the solution graph generated by the BDD solver. +; This value can be used to force the BDD solver to abort the evaluation of a +; complex constraint scenario that cannot be evaluated with finite memory. +; This value is specified in 1000s of nodes. +; The default value is 10000. A value of 0 indicates no limit. +; SolveGraphMaxSize = 10000 + +; Specify the maximum number of evaluations that may be performed on the +; solution graph by the BDD solver. This value can be used to force the BDD +; solver to abort the evaluation of a complex constraint scenario that cannot +; be evaluated in finite time. This value is specified in 10000s of evaluations. +; The default value is 10000. A value of 0 indicates no limit. +; SolveGraphMaxEval = 10000 + +; Specify random sequence compatiblity with a prior release. This +; option is used to get the same random sequences during simulation as +; as a prior release. Only prior releases with the same major version +; as the current release are allowed. +; NOTE: Only those random sequence changes due to solver optimizations are +; reverted by this variable. Random sequence changes due to solver bugfixes +; cannot be un-done. +; NOTE: This variable can be overridden with the vsim "-solverev" command +; line switch. +; Default value set to "" (no compatibility). +; SolveRev = + +; Environment variable expansion of command line arguments has been depricated +; in favor shell level expansion. Universal environment variable expansion +; inside -f files is support and continued support for MGC Location Maps provide +; alternative methods for handling flexible pathnames. +; The following line may be uncommented and the value set to 1 to re-enable this +; deprecated behavior. The default value is 0. +; DeprecatedEnvironmentVariableExpansion = 0 + +; Specify the memory threshold for the System Verilog garbage collector. +; The value is the number of megabytes of class objects that must accumulate +; before the garbage collector is run. +; The GCThreshold setting is used when class debug mode is disabled to allow +; less frequent garbage collection and better simulation performance. +; The GCThresholdClassDebug setting is used when class debug mode is enabled +; to allow for more frequent garbage collection. +; GCThreshold = 100 +; GCThresholdClassDebug = 5 + +; Turn on/off collapsing of bus ports in VCD dumpports output +DumpportsCollapse = 1 + +; Location of Multi-Level Verification Component (MVC) installation. +; The default location is the product installation directory. +MvcHome = $MODEL_TECH/.. + +; Location of InFact installation. The default is $MODEL_TECH/../../infact +; +; InFactHome = $MODEL_TECH/../../infact + +; Initialize SystemVerilog enums using the base type's default value +; instead of the leftmost value. +; EnumBaseInit = 1 + +; Suppress file type registration. +; SuppressFileTypeReg = 1 + +; Enable/disable non-LRM compliant SystemVerilog language extensions. +; Valid extensions are: +; altdpiheader - Alternative style function signature generated in DPI header", +; cfce - generate an error if $cast fails as a function +; cfmt - C like formatting for specifiers with '#' prefix ('%#x', '%#h') +; dfsp - sets default format specifier as %p, if no format specifier is given for unpacked array in $display and related systasks +; expdfmt - enable format string extensions for $display/$sformatf +; extscan - support values greater than 32 bit for string builtin methods (atohex, atobin, atooct, atoi) +; fmtcap - prints capital hex digits with %X/%H in display calls +; iddp - ignore DPI disable protocol check +; lfmt - zero-pad data if '0' prefixes width in format specifier (e.g. "%04h") +; noexptc - ignore DPI export type name overloading check +; realrand - support randomize() with real variables and constraints (Default) +; SvExtensions = [+|-][,[+|-]*] + +; Enable/disable non-LRM compliant SystemVerilog constrained-random language extensions. +; Valid extensions are: +; arraymode - consider rand_mode of unpacked array field independently from its elements +; deepcheck - allow randomize(null) to recursively consider constraints from member rand class handles +; funcback - enable function backtracking (ACT only) +; genmodseedfix - enable LRM-compliant seeding of module/interface instances under for-generate blocks +; nodist - interpret 'dist' constraint as 'inside' (ACT only) +; noorder - ignore solve/before ordering constraints (ACT only) +; pathseed - enable unique seeding of module instances based on hierarchical path name +; promotedist - promote priority of 'dist' constraint if LHS has no solve/before +; randindex - allow random index in constraint (Default) +; randstruct - consider all fields of unpacked structs as 'rand' +; skew - skew randomize results (ACT only) +; strictstab - strict random stability +; SvRandExtensions = [+|-][,[+|-]*] + +; Controls the formatting of '%p' and '%P' conversion specification, used in $display +; and similar system tasks. +; 1. SVPrettyPrintFlags=I use spaces(S) or tabs(T) per indentation level. +; The 'I' flag when present causes relevant data types to be expanded and indented into +; a more readable format. +; (e.g. SVPrettyPrintFlags=I4S will cause 4 spaces to be used per indentation level). +; 2. SVPrettyPrintFlags=L limits the output to lines. +; (e.g. SVPrettyPrintFlags=L20 will limit the output to 20 lines). +; 3. SVPrettyPrintFlags=C limits the output to characters. +; (e.g. SVPrettyPrintFlags=C256 will limit the output to 256 characters). +; 4. SVPrettyPrintFlags=F limits the output to of relevant datatypes +; (e.g. SVPrettyPrintFlags=F4 will limit the output to 4 fields of a structure). +; 5. SVPrettyPrintFlags=E limits the output to of relevant datatypes +; (e.g. SVPrettyPrintFlags=E50 will limit the output to 50 elements of an array). +; 6. SVPrettyPrintFlags=D suppresses the output of sub-elements below . +; (e.g. SVPrettyPrintFlags=D5 will suppresses the output of sub elements below a depth of 5). +; 7. SVPrettyPrintFlags=R shows the output of specifier %p as per the specifed radix. +; It changes the output in $display and similar systasks. It does not affect formatted output functions ($displayh etc)). +; (e.g. SVPrettyPrintFlags=Rb will show the output of %p specifier in binary format. +; 8. Items 1-7 above can be combined as a comma separated list. +; (e.g. SVPrettyPrintFlags=I4S,L20,C256,F4,E50,D5,Rb) +; SVPrettyPrintFlags=I4S + +[lmc] +; The simulator's interface to Logic Modeling's SmartModel SWIFT software +libsm = $MODEL_TECH/libsm.sl +; The simulator's interface to Logic Modeling's SmartModel SWIFT software (Windows NT) +; libsm = $MODEL_TECH/libsm.dll +; Logic Modeling's SmartModel SWIFT software (HP 9000 Series 700) +; libswift = $LMC_HOME/lib/hp700.lib/libswift.sl +; Logic Modeling's SmartModel SWIFT software (IBM RISC System/6000) +; libswift = $LMC_HOME/lib/ibmrs.lib/swift.o +; Logic Modeling's SmartModel SWIFT software (Sun4 Solaris) +; libswift = $LMC_HOME/lib/sun4Solaris.lib/libswift.so +; Logic Modeling's SmartModel SWIFT software (Windows NT) +; libswift = $LMC_HOME/lib/pcnt.lib/libswift.dll +; Logic Modeling's SmartModel SWIFT software (non-Enterprise versions of Linux) +; libswift = $LMC_HOME/lib/x86_linux.lib/libswift.so +; Logic Modeling's SmartModel SWIFT software (Enterprise versions of Linux) +; libswift = $LMC_HOME/lib/linux.lib/libswift.so + +; The simulator's interface to Logic Modeling's hardware modeler SFI software +libhm = $MODEL_TECH/libhm.sl +; The simulator's interface to Logic Modeling's hardware modeler SFI software (Windows NT) +; libhm = $MODEL_TECH/libhm.dll +; Logic Modeling's hardware modeler SFI software (HP 9000 Series 700) +; libsfi = /lib/hp700/libsfi.sl +; Logic Modeling's hardware modeler SFI software (IBM RISC System/6000) +; libsfi = /lib/rs6000/libsfi.a +; Logic Modeling's hardware modeler SFI software (Sun4 Solaris) +; libsfi = /lib/sun4.solaris/libsfi.so +; Logic Modeling's hardware modeler SFI software (Windows NT) +; libsfi = /lib/pcnt/lm_sfi.dll +; Logic Modeling's hardware modeler SFI software (Linux) +; libsfi = /lib/linux/libsfi.so + +[msg_system] +; Change a message severity or suppress a message. +; The format is: = [,...] +; suppress can be used to achieve +nowarn functionality +; The format is: suppress = ,,[,,...] +; Examples: +suppress = 8780,12110 ;an explanation can be had by running: verror 8780 +; note = 3009 +; warning = 3033 +; error = 3010,3016 +; fatal = 3016,3033 +; suppress = 3009,3016,3601 +; suppress = 3009,CNNODP,3601,TFMPC +; suppress = 8683,8684 +; The command verror can be used to get the complete +; description of a message. + +; Control transcripting of Verilog display system task messages and +; PLI/FLI print function call messages. The system tasks include +; $display[bho], $strobe[bho], $monitor[bho], and $write[bho]. They +; also include the analogous file I/O tasks that write to STDOUT +; (i.e. $fwrite or $fdisplay). The PLI/FLI calls include io_printf, +; vpi_printf, mti_PrintMessage, and mti_PrintFormatted. The default +; is to have messages appear only in the transcript. The other +; settings are to send messages to the wlf file only (messages that +; are recorded in the wlf file can be viewed in the MsgViewer) or +; to both the transcript and the wlf file. The valid values are +; tran {transcript only (default)} +; wlf {wlf file only} +; both {transcript and wlf file} +; displaymsgmode = tran + +; Control transcripting of elaboration/runtime messages not +; addressed by the displaymsgmode setting. The default is to +; have messages appear only in the transcript. The other settings +; are to send messages to the wlf file only (messages that are +; recorded in the wlf file can be viewed in the MsgViewer) or to both +; the transcript and the wlf file. The valid values are +; tran {transcript only (default)} +; wlf {wlf file only} +; both {transcript and wlf file} +; msgmode = tran + +; Controls number of displays of a particluar message +; default value is 5 +; MsgLimitCount = 5 + +[utils] +; Default Library Type (while creating a library with "vlib") +; 0 - legacy library using subdirectories for design units +; 2 - flat library +; DefaultLibType = 2 + +; Flat Library Page Size (while creating a library with "vlib") +; Set the size in bytes for flat library file pages. Libraries containing +; very large files may benefit from a larger value. +; FlatLibPageSize = 8192 + +; Flat Library Page Cleanup Percentage (while creating a library with "vlib") +; Set the percentage of total pages deleted before library cleanup can occur. +; This setting is applied together with FlatLibPageDeleteThreshold. +; FlatLibPageDeletePercentage = 50 + +; Flat Library Page Cleanup Threshold (while creating a library with "vlib") +; Set the number of pages deleted before library cleanup can occur. +; This setting is applied together with FlatLibPageDeletePercentage. +; FlatLibPageDeleteThreshold = 1000 + diff --git a/uebung_projekt/simulationsscripts/simulation.tcl b/uebung_projekt/simulationsscripts/simulation.tcl new file mode 100644 index 0000000..ed534b6 --- /dev/null +++ b/uebung_projekt/simulationsscripts/simulation.tcl @@ -0,0 +1,30 @@ +##------------------------------------------------------ +## +## File : simulation.tcl +## Related Files : +## Author(s) : Mueller +## Email : muelleral82290@th-nuernberg.de +## Organization : Georg-Simon-Ohm-Hochschule Nuernberg +## Notes : Counter Modul +## +##------------------------------------------------------ +## History +##------------------------------------------------------ +## Version| Author | Mod. Date | Changes Made: +## v1.00 | Mueller | 27/04/2023 | first code +##------------------------------------------------------ + +quit -sim + +# Aufruf der Simulation +# vsim -novopt -coverage -cvg63 -voptargs=+acc work.ShiftRegister_tb --Original +# vsim -cvg63 -voptargs=+acc work.top +vsim -cvg63 -voptargs="+acc" top_tb + +do ./simulationsscripts/wave.do + +# Objects im Trace-Window +# add wave sim:/top/* + +# Starten des Simulators + run 210000 ns diff --git a/uebung_projekt/simulationsscripts/wave.do b/uebung_projekt/simulationsscripts/wave.do new file mode 100644 index 0000000..f74df85 --- /dev/null +++ b/uebung_projekt/simulationsscripts/wave.do @@ -0,0 +1,31 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -radix binary /top_tb/stim_dip_if/dip +add wave -noupdate -radix binary /top_tb/t1/fpga_bus/dip +add wave -noupdate -radix binary /top_tb/stim_clock_if/clk +add wave -noupdate -radix binary /top_tb/t1/fpga_bus/clk +add wave -noupdate -radix binary /top_tb/t1/fpga_bus/timer +add wave -noupdate -radix binary /top_tb/t1/s/FRAM_Adr +add wave -noupdate -radix binary /top_tb/t1/s/clk_cntr +add wave -noupdate -radix binary /top_tb/t1/s/FRAM_DATA_IN +add wave -noupdate -radix binary /top_tb/t1/s/FRAM_DATA_OUT +add wave -noupdate -radix binary /top_tb/t1/f/mosi +add wave -noupdate -radix binary /top_tb/t1/f/sclk +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 0 +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 0 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ns +update +WaveRestoreZoom {50 ns} {1050 ns} diff --git a/uebung_projekt/transcript b/uebung_projekt/transcript new file mode 100644 index 0000000..c4a3443 --- /dev/null +++ b/uebung_projekt/transcript @@ -0,0 +1,495 @@ +# // Questa Sim-64 +# // Version 2019.4 linux_x86_64 Oct 15 2019 +# // +# // Copyright 1991-2019 Mentor Graphics Corporation +# // All Rights Reserved. +# // +# // QuestaSim and its associated documentation contain trade +# // secrets and commercial or financial information that are the property of +# // Mentor Graphics Corporation and are privileged, confidential, +# // and exempt from disclosure under the Freedom of Information Act, +# // 5 U.S.C. Section 552. Furthermore, this information +# // is prohibited from disclosure under the Trade Secrets Act, +# // 18 U.S.C. Section 1905. +# // +do /users/ads1/muelleral82290/linux/Dokumente/esy_B/uebung_projekt/compilescripts/simulation/compile.tcl +# +# create workspace +# QuestaSim-64 vmap 2019.4 Lib Mapping Utility 2019.10 Oct 15 2019 +# vmap work ./work +# Modifying modelsim.ini +# +# Compile sv-Designfiles +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/interface.sv +# -- Compiling interface led_if +# -- Compiling interface dip_if +# -- Compiling interface fram_if +# -- Compiling interface clock_if +# +# Top level modules: +# --none-- +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/stimuli.sv +# -- Compiling module stimuli +# +# Top level modules: +# stimuli +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_level.sv +# -- Compiling module top +# -- Compiling interface bus +# -- Compiling module parallelport +# -- Compiling module steuerung +# +# Top level modules: +# top +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_tb.sv +# -- Compiling module top_tb +# +# Top level modules: +# top_tb +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/timer.sv +# -- Compiling module timer +# +# Top level modules: +# timer +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master_Control.sv +# -- Compiling module SPI_Master +# +# Top level modules: +# SPI_Master +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master.sv +# -- Compiling module SPI_Master_With_Single_CS +# +# Top level modules: +# SPI_Master_With_Single_CS +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/FRAM_Controller.sv +# -- Compiling module FRAM +# +# Top level modules: +# FRAM +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:04:53 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/fram.sv +# -- Compiling module spi +# +# Top level modules: +# spi +# End time: 14:04:53 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# +# Run Simulation +# vsim -cvg63 -voptargs=""+acc"" top_tb +# Start time: 14:04:53 on Jun 15,2023 +# ** Note: (vsim-3812) Design is being optimized... +# ** Note: (vopt-143) Recognized 1 FSM in module "SPI_Master_With_Single_CS(fast)". +# Loading sv_std.std +# Loading work.top_tb(fast) +# Loading work.led_if(fast) +# Loading work.dip_if(fast) +# Loading work.fram_if(fast) +# Loading work.clock_if(fast) +# Loading work.top(fast) +# Loading work.bus(fast) +# Loading work.timer(fast) +# Loading work.steuerung(fast) +# Loading work.spi(fast) +# Loading work.FRAM(fast) +# Loading work.SPI_Master_With_Single_CS(fast) +# Loading work.SPI_Master(fast) +# Loading work.parallelport(fast) +# Loading work.stimuli(fast) +do /users/ads1/muelleral82290/linux/Dokumente/esy_B/uebung_projekt/compilescripts/simulation/compile.tcl +# +# create workspace +# ** Warning: (vdel-134) Unable to remove locked optimized design "_opt". Locker is muelleral82290@efiapps1.efi.fh-nuernberg.de. +# ** Warning: (vlib-34) Library already exists at "work". +# QuestaSim-64 vmap 2019.4 Lib Mapping Utility 2019.10 Oct 15 2019 +# vmap work ./work +# Modifying modelsim.ini +# +# Compile sv-Designfiles +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/interface.sv +# -- Compiling interface led_if +# -- Compiling interface dip_if +# -- Compiling interface fram_if +# -- Compiling interface clock_if +# +# Top level modules: +# --none-- +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/stimuli.sv +# -- Compiling module stimuli +# +# Top level modules: +# stimuli +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_level.sv +# -- Compiling module top +# -- Compiling interface bus +# -- Compiling module parallelport +# -- Compiling module steuerung +# +# Top level modules: +# top +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_tb.sv +# -- Compiling module top_tb +# +# Top level modules: +# top_tb +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/timer.sv +# -- Compiling module timer +# +# Top level modules: +# timer +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master_Control.sv +# -- Compiling module SPI_Master +# +# Top level modules: +# SPI_Master +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master.sv +# -- Compiling module SPI_Master_With_Single_CS +# +# Top level modules: +# SPI_Master_With_Single_CS +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/FRAM_Controller.sv +# -- Compiling module FRAM +# +# Top level modules: +# FRAM +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:11:54 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/fram.sv +# -- Compiling module spi +# +# Top level modules: +# spi +# End time: 14:11:54 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# +# Run Simulation +# End time: 14:11:55 on Jun 15,2023, Elapsed time: 0:07:02 +# Errors: 12, Warnings: 1 +# vsim -cvg63 -voptargs=""+acc"" top_tb +# Start time: 14:11:55 on Jun 15,2023 +# ** Note: (vsim-3813) Design is being optimized due to module recompilation... +# Loading sv_std.std +# Loading work.top_tb(fast) +# Loading work.led_if(fast) +# Loading work.dip_if(fast) +# Loading work.fram_if(fast) +# Loading work.clock_if(fast) +# Loading work.top(fast) +# Loading work.bus(fast) +# Loading work.timer(fast) +# Loading work.steuerung(fast) +# Loading work.spi(fast) +# Loading work.FRAM(fast) +# Loading work.SPI_Master_With_Single_CS(fast) +# Loading work.SPI_Master(fast) +# Loading work.parallelport(fast) +# Loading work.stimuli(fast) +# Can't move the Now cursor. +# Can't move the Now cursor. +add wave -position insertpoint \ +sim:/top_tb/t1/f/mosi +do /users/ads1/muelleral82290/linux/Dokumente/esy_B/uebung_projekt/compilescripts/simulation/compile.tcl +# +# create workspace +# ** Warning: (vdel-134) Unable to remove locked optimized design "_opt". Locker is muelleral82290@efiapps1.efi.fh-nuernberg.de. +# ** Warning: (vlib-34) Library already exists at "work". +# QuestaSim-64 vmap 2019.4 Lib Mapping Utility 2019.10 Oct 15 2019 +# vmap work ./work +# Modifying modelsim.ini +# +# Compile sv-Designfiles +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:00 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/interface.sv +# -- Compiling interface led_if +# -- Compiling interface dip_if +# -- Compiling interface fram_if +# -- Compiling interface clock_if +# +# Top level modules: +# --none-- +# End time: 14:19:00 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:00 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/stimuli.sv +# -- Compiling module stimuli +# +# Top level modules: +# stimuli +# End time: 14:19:00 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:00 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_level.sv +# -- Compiling module top +# -- Compiling interface bus +# -- Compiling module parallelport +# -- Compiling module steuerung +# +# Top level modules: +# top +# End time: 14:19:00 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:00 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_tb.sv +# -- Compiling module top_tb +# +# Top level modules: +# top_tb +# End time: 14:19:00 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:00 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/timer.sv +# -- Compiling module timer +# +# Top level modules: +# timer +# End time: 14:19:00 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:01 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master_Control.sv +# -- Compiling module SPI_Master +# +# Top level modules: +# SPI_Master +# End time: 14:19:01 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:01 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master.sv +# -- Compiling module SPI_Master_With_Single_CS +# +# Top level modules: +# SPI_Master_With_Single_CS +# End time: 14:19:01 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:01 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/FRAM_Controller.sv +# -- Compiling module FRAM +# +# Top level modules: +# FRAM +# End time: 14:19:01 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:19:01 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/fram.sv +# -- Compiling module spi +# +# Top level modules: +# spi +# End time: 14:19:01 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# +# Run Simulation +# End time: 14:19:01 on Jun 15,2023, Elapsed time: 0:07:06 +# Errors: 12, Warnings: 1 +# vsim -cvg63 -voptargs=""+acc"" top_tb +# Start time: 14:19:01 on Jun 15,2023 +# ** Note: (vsim-8009) Loading existing optimized design _opt +# Loading sv_std.std +# Loading work.top_tb(fast) +# Loading work.led_if(fast) +# Loading work.dip_if(fast) +# Loading work.fram_if(fast) +# Loading work.clock_if(fast) +# Loading work.top(fast) +# Loading work.bus(fast) +# Loading work.timer(fast) +# Loading work.steuerung(fast) +# Loading work.spi(fast) +# Loading work.FRAM(fast) +# Loading work.SPI_Master_With_Single_CS(fast) +# Loading work.SPI_Master(fast) +# Loading work.parallelport(fast) +# Loading work.stimuli(fast) +do /users/ads1/muelleral82290/linux/Dokumente/esy_B/uebung_projekt/compilescripts/simulation/compile.tcl +# +# create workspace +# ** Warning: (vdel-134) Unable to remove locked optimized design "_opt". Locker is muelleral82290@efiapps1.efi.fh-nuernberg.de. +# ** Warning: (vlib-34) Library already exists at "work". +# QuestaSim-64 vmap 2019.4 Lib Mapping Utility 2019.10 Oct 15 2019 +# vmap work ./work +# Modifying modelsim.ini +# +# Compile sv-Designfiles +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/interface.sv +# -- Compiling interface led_if +# -- Compiling interface dip_if +# -- Compiling interface fram_if +# -- Compiling interface clock_if +# +# Top level modules: +# --none-- +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/stimuli.sv +# -- Compiling module stimuli +# +# Top level modules: +# stimuli +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_level.sv +# -- Compiling module top +# -- Compiling interface bus +# -- Compiling module parallelport +# -- Compiling module steuerung +# +# Top level modules: +# top +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/top_tb.sv +# -- Compiling module top_tb +# +# Top level modules: +# top_tb +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/timer.sv +# -- Compiling module timer +# +# Top level modules: +# timer +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master_Control.sv +# -- Compiling module SPI_Master +# +# Top level modules: +# SPI_Master +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/SPI_Master.sv +# -- Compiling module SPI_Master_With_Single_CS +# +# Top level modules: +# SPI_Master_With_Single_CS +# End time: 14:22:07 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:07 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/FRAM_Controller.sv +# -- Compiling module FRAM +# +# Top level modules: +# FRAM +# End time: 14:22:08 on Jun 15,2023, Elapsed time: 0:00:01 +# Errors: 0, Warnings: 0 +# QuestaSim-64 vlog 2019.4 Compiler 2019.10 Oct 15 2019 +# Start time: 14:22:08 on Jun 15,2023 +# vlog -reportprogress 300 -work work ./hdl_src/sv/fram.sv +# -- Compiling module spi +# +# Top level modules: +# spi +# End time: 14:22:08 on Jun 15,2023, Elapsed time: 0:00:00 +# Errors: 0, Warnings: 0 +# +# Run Simulation +# End time: 14:22:08 on Jun 15,2023, Elapsed time: 0:03:07 +# Errors: 5, Warnings: 1 +# vsim -cvg63 -voptargs=""+acc"" top_tb +# Start time: 14:22:08 on Jun 15,2023 +# ** Note: (vsim-3813) Design is being optimized due to module recompilation... +# Loading sv_std.std +# Loading work.top_tb(fast) +# Loading work.led_if(fast) +# Loading work.dip_if(fast) +# Loading work.fram_if(fast) +# Loading work.clock_if(fast) +# Loading work.top(fast) +# Loading work.bus(fast) +# Loading work.timer(fast) +# Loading work.steuerung(fast) +# Loading work.spi(fast) +# Loading work.FRAM(fast) +# Loading work.SPI_Master_With_Single_CS(fast) +# Loading work.SPI_Master(fast) +# Loading work.parallelport(fast) +# Loading work.stimuli(fast) diff --git a/uebung_projekt/vsim.wlf b/uebung_projekt/vsim.wlf new file mode 100644 index 0000000000000000000000000000000000000000..ec60ce06f254f3b62ead15df51f3f8dd39574445 GIT binary patch literal 286720 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 U&1#k8YOh+b_N;Iq|1baX|D*qNB>(^b literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib.qdb b/uebung_projekt/work/@_opt/_lib.qdb new file mode 100644 index 0000000000000000000000000000000000000000..da5bbb617e42e4e54695aba2f8f1eab841a5f2ab GIT binary patch literal 49152 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 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib1_0.qdb b/uebung_projekt/work/@_opt/_lib1_0.qdb new file mode 100644 index 0000000000000000000000000000000000000000..b9a84c7644d7f4eeb38b4494372473696db7310b GIT binary patch literal 32768 zcmeI(PiP!f90&0C=FiT|oBiL_O|!f6o0J?3E}BBYt1&DROsj@1Y+9sj%%oY|G%49g z5UK=w5Mn_@kb(!JP!U0MSr8Qj4OBg-MGrk#gcub311h2iFTVHFrKQlGdJy_u*x&c} zo0)ygeD?Tu4=>Lr-PO)gJU@3bJ{XHwNGa}*VVOw6gR+AgEz4lx;X|Ju%b(bH1VvzRaOk<+ih?^4+OgG}e(fF=~PB-by$5Tg| zjRzYu^>{Toea+B$D!Do>FD$Gky{q%lBU6taZTzUOQEutVz*1HJ_}np6+&f z$%*z_Z<%M^{d-d<4h}lA(e9gPdQ5udN=0rI26u06OkZWfy8hnH!Rv25eq?6q@Wjk) z{7_@I9w+O`(n{}Cdnt*VjaG9kL!XK}>71ay=}-ENex@I2m#)xd`iefM9r}>oqdslZ zTXcb5p>woFFVl;tcK3;V8MyFMQ z`+{|L-l*_#<>(0B%;ogzs_H)YS-j?H5 zOIh4ovM%eMbOYb=WnEEUln4?tUs1Zl8$WbV8vA{_hi!9Mmg59|@DDVf&z}GQ literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib1_0.qpg b/uebung_projekt/work/@_opt/_lib1_0.qpg new file mode 100644 index 0000000000000000000000000000000000000000..f50ef4a074cdcffa1113b10be775a0f6d1f5665c GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib1_0.qtl b/uebung_projekt/work/@_opt/_lib1_0.qtl new file mode 100644 index 0000000000000000000000000000000000000000..3d8e8b3f1d83994b6ddf0d5dad2033d51e52b33a GIT binary patch literal 54931 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 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib2_0.qpg b/uebung_projekt/work/@_opt/_lib2_0.qpg new file mode 100644 index 0000000..e69de29 diff --git a/uebung_projekt/work/@_opt/_lib2_0.qtl b/uebung_projekt/work/@_opt/_lib2_0.qtl new file mode 100644 index 0000000000000000000000000000000000000000..8f599f2b2a441a92f3ad9dc2267cddba1be3e368 GIT binary patch literal 24031 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 XJBEyjZi$Wu^VE)YbVBI}w=e$>4p;AA literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib3_0.qdb b/uebung_projekt/work/@_opt/_lib3_0.qdb new file mode 100644 index 0000000000000000000000000000000000000000..4c7ea13c7b3d7a3634077864b8ad12c20172b0ac GIT binary patch literal 32768 zcmeI(O-K}B7zglq=VNE~-S6E%%8zI0lqrT17(vu#i&<&8tdLZQ=4eZ+o9qe_Lf8P z#bK{d%8$9jL!)l1tGSvG+CJCSG|loKrvIoOx?fhWMfJowX=yEWa}k=+jD|&xW*Zji z%sN-&6a*ju0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<;GY81hHlr? z*Nf@?^59Ux8=RaPDilwjt)|hD&7^Y~H<#XjB;!_}b+?V=3toQM?dr*8Iy2d3x8zN% zTIA1rE34wjNXaX&towSpdiyee-+^D**to+8)O6GfEk8c&O_e4J`LZ`KI9V?8+HcF7 z8fdLHb)(%;-|3XFYieu7bfUU@wK4xH75dt}t0&iP-947=>P~0--NTvwX4jkY#?F<; z2gf`&mpPtmjQAgsqFIf8(@*+NU+5Dp(mPt93caCM^n#wz6M9T@^nmX9m*Ic_1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG`~BLYUs&@>~dMna9a8ZkAZ zYDClss}WK|su5JfQNvavpoXP}sfMA3u7>c(^8J6(=ofva_x@e~m-Lh#(OtSlSLh;@ zXp~OSQR<*}Y9iXm7r<*E009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY>&T|lNR;plowuk5)jliZU=cK0rs;GWPc?VgNtj~l%^H^~_Hn3!z4Eu-9{;#zA` zMz}}xO3Pju<{mbBw||o%?jh0EI4>o4XvEk&CPjfa5wBo@}$(c>rPtM+QJGtx+80)Pn@C)>i_>g=qr8n ze*>^UZ|OBXr+NQ>{}1Ut-Juz};r|-ol7ATv2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1l9@!OyP)BiX)liNF+GoagJDwBO2w1L^#4>j!=k0N{(QV a!*Muln2w=u$iC_YV%t>g@W?9HU3pUGA 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 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib4_0.qpg b/uebung_projekt/work/@_opt/_lib4_0.qpg new file mode 100644 index 0000000000000000000000000000000000000000..104fec038da7f78bc9ba192c44e7ee03217704e2 GIT binary patch literal 311296 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

=41S>+%0A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 ayCSh;kyhXC5o2>mKTu(NpU(BI+jy5=+953DO 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 V_dD=@4nEJ2@C@b~{m<*${}0mG*GB*V literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib4_0.qtl b/uebung_projekt/work/@_opt/_lib4_0.qtl new file mode 100644 index 0000000000000000000000000000000000000000..47d6261ae6b64ccfb5a3e4d2f26aeafa859e2e71 GIT binary patch literal 80539 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 V>c!#?8_iJmU=!l5zCV1t{eO%9F{S_j literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib5_0.qdb b/uebung_projekt/work/@_opt/_lib5_0.qdb new file mode 100644 index 0000000000000000000000000000000000000000..457fc05715223e8f744ff11ed6e663385550ec8c GIT binary patch literal 32768 zcmeI*O=}ZD7{Kv)NwXW<`jUfDYC3}_14ZdKFqTDvw$zY#&L>H6Bk`#)!d;#xX z1W#TCKY}-pegKhPyolh%ix+1$U0VwFC>8!QWS^PY+3d5w>r6K5qn;a#)1mEkpV(C^ ztdLUNwpIvHIQ;mK73Gg%EH5%|oDvJ-=CyZ==9SRP2g1BrJ}^&DnawE#5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009L4DlpY5s#L3T+MaZ}1J~Kx?+!+fpXE`n zHIsTPv90=@`-#m*?TvmqaB0srHd@Kuq`6|pZueLxec_IJqkezvCP)3PjmCqm#AON|EmL-2QlXkWSooXKymf`o1+wYI`+rg@yJwJkui?RhE|I^irOENX*X) zL7mJ!44zEgZZ;e1^=8}NOWG^e?YrUg$xdhJY%6)#sx5|lSRu?W^V9q=-$Ivy00Iag zfB*srAbRI$!lS7a=e_Cpu^1>t4>Q5=`f z`I!Cw|ErnRFXm%bKZFw$1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** u5cqcjkt~$_-7ZV5!k-45mpbwxlDe1$6?O+)o$U=M&-MV!XFCAqO1}XVLViR5 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib5_0.qpg b/uebung_projekt/work/@_opt/_lib5_0.qpg new file mode 100644 index 0000000000000000000000000000000000000000..ca5ea44f24f65b3d8acaaf654c430de8c51b16e2 GIT binary patch literal 40960 zcmeIu0Sy2E0K%a6Pi+o2h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd t0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0Rsm92L_-300961 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib5_0.qtl b/uebung_projekt/work/@_opt/_lib5_0.qtl new file mode 100644 index 0000000000000000000000000000000000000000..f9b4cb2a2f5ee350f2ff8c752627cdfdc440c877 GIT binary patch literal 5217 tcmeIuF#!Mo0K%a4Pi+Tph(KY$fB^#r3>YwAz<>b*1`HT5V8DQZb6^x<00961 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/@_opt/_lib6_0.qdb b/uebung_projekt/work/@_opt/_lib6_0.qdb new file mode 100644 index 0000000000000000000000000000000000000000..86589587f9400df261a9a4e3fc9654683a07935c GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/_info b/uebung_projekt/work/_info new file mode 100644 index 0000000..ac679df --- /dev/null +++ b/uebung_projekt/work/_info @@ -0,0 +1,398 @@ +m255 +K4 +z2 +!s11f vlog 2019.4 2019.10, Oct 15 2019 +13 +!s112 1.1 +!i10d 8192 +!i10e 25 +!i10f 100 +cModel Technology +Z0 d/users/ads1/muelleral82290/linux/Dokumente/esy_B/uebung_projekt +T_opt +Z1 !s110 1686831728 +V2L38BN@acDd:OB=HL_FC32 +04 6 4 work top_tb fast 0 +=1-005056b42dc6-648b0270-7d119-559d +o-quiet -auto_acc_if_foreign -work work +acc +Z2 tCvgOpt 0 +n@_opt +OL;O;2019.4;69 +Ybus +Z3 DXx6 sv_std 3 std 0 22 9oUSJO;AeEaW`l:M@^WG92 +Z4 !s110 1686831727 +!i10b 1 +!s100 T;581z6K]3OXG=KOJdK4G2 +!s11b Dj[TOJX9onk[mCamXbz9c3 +I<3_5F:_4Ri@f;?1:3BJf=2 +Z5 VDg1SIo80bB@j0V0VzS_@n1 +S1 +R0 +Z6 w1686830281 +Z7 8./hdl_src/sv/top_level.sv +Z8 F./hdl_src/sv/top_level.sv +!i122 -1 +L0 15 +Z9 OL;L;2019.4;69 +r1 +!s85 0 +31 +Z10 !s108 1686831727.000000 +Z11 !s107 ./hdl_src/sv/top_level.sv| +Z12 !s90 -reportprogress|300|-work|work|./hdl_src/sv/top_level.sv| +!i113 0 +Z13 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact +R2 +Yclock_if +R3 +R4 +!i10b 1 +!s100 iND9Vz2l5W=c=U8A:1 +IOQJeZ`mU9[W_4_O1 +!s11b djVBMKk[@Wh5FXIDGlUF[2 +I`agi[9j3c9e5gcFWSVSH51 +R5 +S1 +R0 +R14 +R15 +R16 +!i122 -1 +L0 21 +R9 +r1 +!s85 0 +31 +R10 +R17 +R18 +!i113 0 +R13 +R2 +vparallelport +R3 +R4 +!i10b 1 +!s100 Oh9lLSH=`_Q:=@41ZzlcY2 +!s11b k21ML[34E18n]@g]EG:g02 +I;1_EJNiVm[nDB?57=nXOD3 +R5 +S1 +R0 +R6 +R7 +R8 +!i122 -1 +L0 30 +R9 +r1 +!s85 0 +31 +R10 +R11 +R12 +!i113 0 +R13 +R2 +vspi +R3 +R1 +!i10b 1 +!s100 FWg;A^hM6Xk;TFJMgza]m2 +!s11b NBC7eT]a7]iC:n6DXhW[e0 +Ilbh>SdZV4bSDzE22EQIiC3 +R5 +S1 +R0 +w1686830667 +8./hdl_src/sv/fram.sv +F./hdl_src/sv/fram.sv +!i122 -1 +L0 4 +R9 +r1 +!s85 0 +31 +!s108 1686831728.000000 +!s107 ./hdl_src/sv/fram.sv| +!s90 -reportprogress|300|-work|work|./hdl_src/sv/fram.sv| +!i113 0 +R13 +R2 +vSPI_Master +R3 +R4 +!i10b 1 +!s100 LNaIK]EJb:HMhCL_bcUOT2 +!s11b RZ[UYHW;Fa4LhmckzB[DGbebG_Mk0W]hI8XCQ?k0 +!s11b WKleG=JcKL4FgO@TP[IO[1 +IE`WCa5G2QlghM9EX[<1dS3 +R5 +S1 +R0 +R6 +R7 +R8 +!i122 -1 +R20 +R9 +r1 +!s85 0 +31 +R10 +R11 +R12 +!i113 0 +R13 +R2 +vstimuli +R3 +R4 +!i10b 1 +!s100 ?c5GG;9B8k3 +IEenLI0W00diXD61Ele2;U0 +R5 +S1 +R0 +w1686831703 +8./hdl_src/sv/timer.sv +F./hdl_src/sv/timer.sv +!i122 -1 +L0 19 +R9 +r1 +!s85 0 +31 +R10 +!s107 ./hdl_src/sv/timer.sv| +!s90 -reportprogress|300|-work|work|./hdl_src/sv/timer.sv| +!i113 0 +R13 +R2 +vtop +R3 +R4 +!i10b 1 +!s100 6?3aiGY1NTOnA[jU;ZnEa3 +!s11b =zPVnM;Zm1L1Ig2finB;E2 +I^g60QFGiK:2b=KZhX2 +!s11b jcE]a:O3cJ<=CdGZ:MgQ62 +IbRb[2DAWSb2IUOHB[hFz:2 +R5 +S1 +R0 +w1686315659 +8./hdl_src/sv/top_tb.sv +F./hdl_src/sv/top_tb.sv +!i122 -1 +R19 +R9 +r1 +!s85 0 +31 +R10 +!s107 ./hdl_src/sv/top_tb.sv| +!s90 -reportprogress|300|-work|work|./hdl_src/sv/top_tb.sv| +!i113 0 +R13 +R2 diff --git a/uebung_projekt/work/_lib.qdb b/uebung_projekt/work/_lib.qdb new file mode 100644 index 0000000000000000000000000000000000000000..dd9f661622ec9a35d400f832c6ab5a42aae4c440 GIT binary patch literal 49152 zcmeI)TZkmp83*vH>gt}Z>6z*2>6z*2smoV8Ypac$O=dA98)4HMX*LEgxS0htU{keS zGh1xm>{GqE0U;YgB1#?-0wEVLc@T-0Ac%!Ol}efT#tU)QPs`Ks#IJ@ZoC=dNzkYcaoVH{CsZ+m>uemZh3)OOjOJ&kTPi4~4%_ zlMP$g0%|3ba}bp7N` z-QGF*jXUf1{;++sGkC;r+IQT&Q$JNdeZ&rD4R1FG9jEQtJN5f^j@Uylng3nyU{>Js z%t4Qqv&RlL&)j{-y=UstfszAMkJ#~WbbzRLwYr_ol0NoQw6-Q+`eKCT1^f~NM;RsJBlgYby^Ha+UvOFjZ~Ne? z#P+d+?f7!|gd=v8tyXVRGNs$rW?l_HLSs8Ta*BT#vf&3}kv}u^m_+}g_vnxGEd7da z-~j;$KmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P-nv5-8-=iYE7* zJ+I++nAZ=Oy_8lDWu-l@dx6KA<&^qmS?YQH zvtB0{*;QUrR8x_{wD<~zl#^9m(=K>@#+%Obv(3=s68)MUr}ybk^c-FNTo-^z5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2ylVI_!j{3d4B(2KDhs% zHu(L2dB**Jb(7!!m#5zUPv!ajfAQ6V=>ETw8@m4={{G+AS0#FjUZ$T?n@-Uo>tpMR z^}O{X%d>8`4w?To|7QNqyky>Q-fHHJe;R)UEgmRVc)(&kztQXaZKr?nD35606p5T| zCJA#S;j+1(M2U(aPKEa{YP+?5&8fAA8!f*b$MhtoPsUs}uSc;Hn>=<;ct)EwR_oRL zMy>6z!0R_^5BtHnMveKMy_VOgovpFq!)TxI`CU18qMXbxe}?(|Y8IpUw`}nF)$sTm zWAle_79Nhnr6gRM6?R$nWE9?7=iyS=c|BYizCV2S${TTJEy=8nWn89Qi86;*d8Qop zSq-|qM&OP#%EqB$5-N^|TqX~q(2XlRL}8~DEd?GwhW;+v=V@-|%;bPfETij?E>pxycwmvs3XgGs!VCyM3oU-t32QDxIX# z6Di*7p(u4&Z&Nkq9`jX zq7(|EEH8_a&x^9OB+BBVC<_ast`^KM*7p<49%XAx^q2JOg{GR_~{5t{vur69ZH{Lb=%~u6@ zkTlvd|89O_y<=UqiqbT2_n<{bPX=@y;%-ZF$f~i(2d{O%8D;X?bW3S8d;_Vw*jlc<(CI?-%CCUL3YL-z7U3JHnBp06J)0Ea9LWYk1qt^1nSgr Wz6gRCAOF3-6DaHaUDd|NUG_hlTbpwL literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/_lib1_0.qdb b/uebung_projekt/work/_lib1_0.qdb new file mode 100644 index 0000000000000000000000000000000000000000..31e734c230a536d2f2620cafbc455cbf75137f0a GIT binary patch literal 32768 zcmeI(U1(cn90u_7o|EL9^XB{e`}|)gsAWS}y>M4$wS=v6A1-ES6`83$?K0EGnpEq= zkLnO%Oi>gWiZ}!Z6Lc^Hb;2$b#R-D!!XXTy%Dhk!K@^!6p7*a|W8khupFp1HIZ2wH z{^;FFw)JNGZof0HW~S%Vs4|oxgt1X6!!TmOJrvxBH!~O)AB*7=m+6>sZS7c`4jGoW zYS3YCmG)fb)p!a55P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1R(H_ z0xOnj7wdJgGBs#Vcm4L#@^rU%&%ML8CYp`$RztPMZ`#^W!$;LMvz@NrnNgG5Ta8VP z<~r5)7cV;K?DH=i^=4=L{@}v#uI-aMcQyWg2mZ;Ck?X8TaiT7a&cckp++XZ=2LA5$ z(xAu3!TRf@c8?C1zR>RIzv(Vv7pqmVk{+JDKC$3cy39+@T|ao~sjFL>liS9dQ|ji% z)H>xa`}6k=7TWW^YBg?ejl_drq3CXd&eN~-GyOo{(JGy#Gjy6hr%&l4I!W)-J9LcR zq&Mg=y+SY1^K_7&rYGr9dWZ(pqrKz@Z-5&FAOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2teRJEMO_iFf7vH>8R_d>8R?c=qT$b=_u+b=*a8H>B#EH=t%2G z=}78G=!olx>4@r(I$Rx&4qHb=M_5Nlho!^RA%fuR|K5IsexvW{>)@*YCv<||rq_e( z{0HbU>eC$ENjqqQZltwDlqK6c@BQR`<9+FU=AHD8dq=#Ny=Q|rzzqTrfB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##{`Uf|3JXV=s`l`#q+psR8ISKfCq3St zyLs_dS?681pW7RkHQu$<*{Sui%DXD7JMyx^yW;-QD9bYMvK=3b$rA5U?7`6&Ws!H$ z86RoM0`G$P@m0^rJny`D`pOeB$2(^_R~(mF-dVAv#$<+fMnvfbndY4q*Ly;yc&EhC z+HEq)J1M@c^ksr~!VH%dWSnB}(huviS6GQ>M1Hdv>m#oH2_%_pSE+Y}qb7F&c} z$8^LN8T|JtTBE=J{|o&{=Yr1woS`r16n#h^1mF9Ai;mE1bSU`F{{h-hkI)0b_x<-! zo9>`nX)85oEcjf&dKwAd05=Fg00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fWW_6AQB2boS+mJ5trw2)$3ff8dtT-RjF{5%Uq=rSFy-dC~)QTT)7-qHp`XC zaHZ2+sT5Z-$(2ZO#p7JD7*{mPB_)^Zaybr{ZF5B;T;VWRD8yx1T&5WcxsLlM?91Bt literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/_lib1_0.qpg b/uebung_projekt/work/_lib1_0.qpg new file mode 100644 index 0000000..e69de29 diff --git a/uebung_projekt/work/_lib1_0.qtl b/uebung_projekt/work/_lib1_0.qtl new file mode 100644 index 0000000000000000000000000000000000000000..a5a7272f3fa2e91ff18f6d5dec2cca4218e30ece GIT binary patch literal 31618 zcmb?@2S60R*6(Cyc6PR~yYya`-a$d6gGd#TB49;nc2NF`9Tibjte}Wur78$22%;zg zqJjk#uouKGDk3UHY`o0uqUh(n-@Wg>f!)c;IXTHBCnw1-nFTSId0gAG23;IA_+2=- z72h#T&w4u|x-fVX01Y{W3Sj1J1gGxKW(b42`iMkiDqey+@jCLcVIB7-2So4F;Wj(#EK`vl z@kuc1!I+i{DmLNy83pHc^NNo>U-#MJaf#~2WtGb&=AKU;AsxTwV?0WgPM{&sK#&-q zg_!lh3;5FCNBf+FXMqXYpy^%+G=oZnMOp#nfKEUn0s%;%pPWh$6N;`F0g#Qyjl`6> zxd6zUqbwC2Ag)Q5S`}E6+h8qb!rDB%`f`RwAhFj)za{&7AN5HLpp%0A0FhEb5lbZu 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 T&#=6AEiLEY#6_C_-q(KstOSB@ literal 0 HcmV?d00001 diff --git a/uebung_projekt/work/_opt__lock b/uebung_projekt/work/_opt__lock new file mode 100644 index 0000000..1bb61c7 --- /dev/null +++ b/uebung_projekt/work/_opt__lock @@ -0,0 +1 @@ +muelleral82290@efiapps1.efi.fh-nuernberg.de, pid = 21917 diff --git a/uebung_projekt/work/_vmake b/uebung_projekt/work/_vmake new file mode 100644 index 0000000..37aa36a --- /dev/null +++ b/uebung_projekt/work/_vmake @@ -0,0 +1,4 @@ +m255 +K4 +z0 +cModel Technology