CMPEN 331-Final Project By Robert Cassidy & Dan McMahon Section 1 Dr. Almekkawy Abstract For the Final Project, we were tasked with creating the final two stages of the MIPS architecture, memory and write back, and implementing them together with the instruction fetch, instruction decode, and execution stages from the previous labs all together onto an FPGA. For our design, we assumed that pipelining would be utilized, and as a result implemented registers accordingly. In order to realize the design requirements laid out in the project description, we first created modules for the basic components of the circuit utilizing the behavioral method of Verilog programming, just as we did before. After these modules were realized, we instantiated them in their respective main modules, which connected them in a structural fashion to realize the desired stages of the MIPS architecture. We instantiated a number of necessary modules with the same values we used in our previous labs. Finally, we connected all 5 stages in one large testbench to showcase how it all works together. The output from this testbench was ran on our Zynq-7000 XC7Z010--1CLG400C board and the resulting product, from the board itself to the waveforms and the reports, are all shown below. Introduction In order to implement the MIPS architecture, we first constructed modules for each of the stages (Instruction Fetch, Instruction Decode, Execute, Memory, and Writeback). The instruction fetch stage was responsible for retrieving a 1 word instruction and passing it, as well as the incremented instruction count to the decoding stage. In the decode stage, the first 6 bits of the instruction were analyzed to determine which operation would be executed. Additionally, the first 15 bits of the instruction were sign extended in this stage and data was loaded from memory based upon the instruction. These results, as well as two 5 bit portions of the instruction were passed to the next stage, the execute stage. In this stage, the ALU, controlled by both the op code and the function portions of the instruction, operated on two arguments passed to it. It outputted the result of the operation, as well as a value of “Zero”, denoting if the arguments were equal (this is necessary for branching). Additionally, an adder added the sign extension output from the previous stage to the current address. These results, along with one of the aforementioned 5 bit portions of the instruction, determined by a mux, were passed to the next stage. In this stage, execute, the result of the ALU was used to lookup an address in memory, and either read or write a result, depending on the opcode. This result as well as the ALU result and the 5 bits were passed to the writeback stage. In this stage, a mux, operating in accordance to the opcode, chose which result to send back to the instruction decode stage. Additionally, the 5 bits were sent to the instruction stage, to act as an address. While implementing this design, registers were used to separate the stages. This allowed for pipeline, or the act of operating on multiple instructions at a time. This is particularly useful, because it allows the computer to complete sets of instructions in a fraction of the amount of time it would take without pipelining. A diagram of the MIPS architecture is shown above; it will be discussed more later. Design Code Stage 1: INSTRUCTION FETCH Mux `timescale 1ns/1ps module mux2to1 (sel, a0, a1, out); input sel; input [31:0] a0, a1; output reg [31:0] out; /*initial begin out <= 31'd0; #10 out <= 31'd1; #10 out <= 31'd2; end*/ always @ (sel or a0 or a1) begin case(sel) 0:out = a0; 1:out = a1; endcase end endmodule Program Counter `timescale 1ns/1ps module program_counter (NPCin, NPCout, clk); input clk; input [31:0] NPCin; output reg [31:0] NPCout; initial begin NPCout <= 0; end always @ (posedge clk) begin //#1 NPCout <= NPCin; end endmodule Adder `timescale 1ns/1ps module INCR(IncrOut, a); input [31:0] a; output reg [31:0] IncrOut; always @(a) begin IncrOut = a + 1; end endmodule Instruction Memory `timescale 1ns/1ps module Instruction_memory (address, data); input [31:0] address; output reg [31:0] data; reg [31:0] memory [0:127]; initial begin memory [0] <= 32'h002300AA; memory [1] <= 32'h10654321; memory [2] <= 32'h00100022; memory [3] <= 32'h8C123456; memory [4] <= 32'h8F123456; memory [5] <= 32'hAD654321; memory [6] <= 32'h13012345; memory [7] <= 32'hAC654321; memory [8] <= 32'h12012345; memory [9] <= 32'h002300AA; memory [10] <= 32'h10654321; memory [11] <= 32'h00100022; memory [12] <= 32'h8C123456; memory [13] <= 32'h8F123456; memory [14] <= 32'hAD654321; memory [15] <= 32'h13012345; memory [16] <= 32'hAC654321; memory [17] <= 32'h12012345; memory [18] <= 32'h002300AA; memory [19] <= 32'h10654321; memory [20] <= 32'h00100022; memory [21] <= 32'h8C123456; memory [22] <= 32'h8F123456; memory [23] <= 32'hAD654321; memory [24] <= 32'h13012345; memory [25] <= 32'hAC654321; memory [26] <= 32'h12012345; memory [27] <= 32'h002300AA; memory [28] <= 32'h10654321; memory [29] <= 32'h00100022; memory [30] <= 32'h8C123456; memory [31] <= 32'h8F123456; end always @(address) begin data <= memory [address]; end endmodule Instruction Fetch/Instruction Decode Register `timescale 1ns/1ps module If_Id_REG ( input clock, input wire [31:0] NPCin, instin, output reg [31:0] NPCout, instout ); /*initial begin instout <= 0; NPCout <= 0; end*/ always @(posedge clock) begin NPCout <= NPCin; instout <= instin; end endmodule Main Module `timescale 1ns/1ps module IF(clock, PC_choose, EX_MEM_NPC, IF_ID_NPC, IF_ID_IR); input clock, PC_choose; input [31:0] EX_MEM_NPC; output [31:0] IF_ID_NPC, IF_ID_IR; wire [31:0] a0, a1, a2, a3; mux2to1 IF_MUX( .sel(PC_choose), .a0(a1), .a1(EX_MEM_NPC), .out(a2) ); program_counter IF_PROG( .clk(clock), .NPCin(a2), .NPCout(a0) ); INCR IF_INC( .a(a0), .IncrOut(a1) ); Instruction_memory IF_MEM( .address(a0), .data(a3) ); If_Id_REG IF_LATCH( .clock(clock), .NPCin(a1), .instin(a3), .NPCout(IF_ID_NPC), .instout(IF_ID_IR) ); endmodule Stage 2: INSTRUCTION DECODE Control Module `timescale 1ns/1ps module CONTROL ( input[5:0] opcode, output reg [1:0] WB, output reg [2:0] M, output reg [3:0] EX ); always @ (opcode) begin case (opcode) 6'b000000: begin EX = 4'b1100; M = 3'b000; WB = 2'b10; end 6'b000100: begin EX = 4'b1010; M = 3'b100; WB = 2'b00; end 6'b100011: begin EX = 4'b0001; M = 3'b010; WB = 2'b11; end 6'b101011 :begin EX = 4'b0001; M = 3'b001; WB = 2'b00; end /*default: begin EX = 4'b1100; M = 3'b000; WB = 2'b10;*/ endcase end endmodule Register Module `timescale 1ns/1ps module REG( input [4:0] read1, read2, write1, input [31:0] writedata, input wexert, output reg [31:0] data1, data2 ); reg [31:0] memory [0:31]; reg [4:0] temp1, temp2; initial begin memory [0] <= 32'h002300AA; memory [1] <= 32'h10654321; memory [2] <= 32'h00100022; memory [3] <= 32'h8C123456; memory [4] <= 32'h8F123456; memory [5] <= 32'hAD654321; memory [6] <= 32'h13012345; memory [7] <= 32'hAC654321; memory [8] <= 32'h12012345; memory [9] <= 32'h002300AA; memory [10] <= 32'h10654321; memory [11] <= 32'h00100022; memory [12] <= 32'h8C123456; memory [13] <= 32'h8F123456; memory [14] <= 32'hAD654321; memory [15] <= 32'h13012345; memory [16] <= 32'hAC654321; memory [17] <= 32'h12012345; memory [18] <= 32'h002300AA; memory [19] <= 32'h10654321; memory [20] <= 32'h00100022; memory [21] <= 32'h8C123456; memory [22] <= 32'h8F123456; memory [23] <= 32'hAD654321; memory [24] <= 32'h13012345; memory [25] <= 32'hAC654321; memory [26] <= 32'h12012345; memory [27] <= 32'h002300AA; memory [28] <= 32'h10654321; memory [29] <= 32'h00100022; memory [30] <= 32'h8C123456; memory [31] <= 32'h8F123456; end always @(read1 or read2 or wexert) begin data1 = memory [read1]; data2 = memory [read2]; if (wexert) memory [write1] <= writedata; end endmodule Sign Extend Module `timescale 1ns/1ps module S_EXTEND( input [15:0] in, output reg [31:0] out ); reg [15:0] temp; always @ (in) begin if (in[15] == 1) begin temp = 16'hffff; end else begin temp = 16'h0000; end out[31:16] <= temp[15:0]; out [15:0] <= in[15:0]; end endmodule ID_EX Module `timescale 1ns/1ps module ID_EX ( input clock, input [1:0] ctlwb_out, input [2:0] ctlm_out, input [3:0] ctlex_out, input [31:0] npc, readdat1, readdat2, signext_out, input [4:0] instr_2016, instr_1511, output reg RegDst, ALUSrc, output reg [1:0] ALUOp, output reg [1:0] wb_ctlout, output reg [2:0] m_ctlout, //output reg [3:0] ex_ctlout, output reg [31:0] npcout, readdat1out, readdat2out, s_extendout, output reg [4:0] instrout_2016, instrout_1511 ); initial begin //wb_ctlout <= 0; //m_ctlout <= 0; //ex_ctlout <= 0; //RegDst <= 0; //ALUOp <= 0; //ALUSrc <= 0; //npcout <= 0; //readdat1out <= 0; //readdat2out <= 0; //s_extendout <= 0; //instrout_2016 <= 0; //instrout_1511 <= 0; end always @(posedge clock) begin wb_ctlout <= ctlwb_out; m_ctlout <= ctlm_out; RegDst <= ctlex_out[3]; ALUOp <= ctlex_out[2:1]; ALUSrc <= ctlex_out[0]; npcout <= npc; readdat1out <= readdat1; readdat2out <= readdat2; s_extendout <= signext_out; instrout_2016 <= instr_2016; instrout_1511 <= instr_1511; end endmodule Main Module `timescale 1ns/1ps module ID(clock, IF_ID_IR,IF_ID_NPC, RegWrite, Write_reg, Write_data, WB1, M1, RegDst, ALUop, ALUsrc, ADD10, ALU0, MUX0, IR, BOTMUX0, BOTMUX1 ); input clock; input [31:0] IF_ID_IR, IF_ID_NPC; input RegWrite; input [4:0] Write_reg; input [31:0] Write_data; output [1:0] WB1; output [2:0] M1; output RegDst; output [1:0] ALUop; output ALUsrc; output [31:0] ADD10, ALU0, MUX0, IR; output [4:0] BOTMUX0, BOTMUX1; wire [1:0] a0; wire [2:0] a1; wire [3:0] a2; wire [31:0] a3, a4, a5; CONTROL ID_con ( .opcode (IF_ID_IR[31:26] ), .WB (a0 ), .M ( a1 ), .EX ( a2 ) ); REG ID_register ( .read1 (IF_ID_IR[25:21] ), .read2 (IF_ID_IR[20:16] ), .write1 ( Write_reg ), .writedata ( Write_data ), .wexert ( RegWrite ), .data1 ( a3 ), .data2 ( a4 ) ); S_EXTEND ID_signextend ( .in (IF_ID_IR[15:0] ), .out ( a5 ) ); ID_EX ID_LATCH ( .clock (clock ), .ctlwb_out (a0 ), .ctlm_out (a1 ), .ctlex_out ( a2 ), .npc ( IF_ID_NPC ), .readdat1 ( a3 ), .readdat2 ( .signext_out ( a5 ), .instr_2016 (IF_ID_IR[20:16] ), .instr_1511 ( IF_ID_IR[15:11] ), .wb_ctlout ( WB1 .m_ctlout ( M1 a4 ), ), ), .RegDst ( RegDst ), .ALUSrc ( ALUsrc ), .ALUOp ( ALUop), .npcout ( ADD10 ), .readdat1out ( ALU0 ), .readdat2out ( MUX0 ), //TO EX_MUX0 AND EX_MEM_LATCH .s_extendout ( IR ), .instrout_2016 ( BOTMUX0 ), .instrout_1511 ( BOTMUX1 ) ); endmodule Stage 3: INSTRUCTION EXECUTE ALU_Control Module `timescale 1ns/1ps module ALU_CONTROL ( input[1:0] ALUOp, input [5:0] funct , output reg [2:0] contin ); always @ (ALUOp or funct) begin case (ALUOp) 2'b00: begin contin = 3'b010; end 2'b01: begin contin = 3'b110; end 2'b10: begin if (funct === 6'b100000) contin = 3'b010; else if (funct === 6'b100010) contin = 3'b110; else if (funct === 6'b100100) contin = 3'b000; else if (funct === 6'b100101) contin = 3'b001; else if (funct === 6'b101010) contin = 3'b111; /*case (funct) 6'b100000 : contin = 3'b010; 6'b100010 : contin = 3'b110; 6'b100100 : contin = 3'b000; 6'b100101 : contin = 3'b001; 6'b101010 : contin = 3'b111; default : contin <= 3'b010; endcase*/ end /*default: begin contin = 3'b010;*/ endcase end endmodule Adder Module `timescale 1ns/1ps module ADDER( input [31:0] add_in1, add_in2, output reg [31:0] add_out ); always @(add_in1 or add_in2) begin add_out <= add_in1 + add_in2; end endmodule Mux Module `timescale 1ns/1ps module mux2to1 (sel, a0, a1, out); input sel; input [31:0] a0, a1; output reg [31:0] out; /*initial begin out <= 31'd0; #10 out <= 31'd1; #10 out <= 31'd2; end*/ always @ (sel or a0 or a1) begin case(sel) 0:out = a0; 1:out = a1; endcase end endmodule ALU Module `timescale 1ns/1ps module alu(ctl, a0, a1, Out, Zero); input [2:0] ctl; input [31:0] a0,a1; output reg [31:0] Out; output reg Zero; initial begin //Zero = 0; end always @(ctl or a0 or a1) begin /*case (ctl) 0: Out = a0 && a1; 1: Out = a0 || a1; 2: Out = a0 + a1; 6: Out = a1 - a0; 7: begin if (a0 < a1) Out <= 1; else Out <= 0; end //12: Out <= ~(a0 | a1); default: Out <= 0; endcase*/ if (ctl === 3'd0) Out = a0 && a1; else if (ctl === 3'd1) Out = a0 || a1; else if (ctl === 3'd2) Out = a0 + a1; else if (ctl === 3'd6) begin Out = a0 - a1; if (Out === 0) Zero = 32'hffffffff; else Zero = 0; end else if (ctl === 3'd7) if (a0 < a1) Out = 32'd1; else Out = 32'd0; end endmodule 5-bit mux `timescale 1ns/1ps module fivebitmux (sel, a0, a1, out); input sel; input [4:0] a0, a1; output reg [4:0] out; always @ (sel or a0 or a1) begin case(sel) 0:out = a0; 1:out = a1; endcase end endmodule EX_MEM Module `timescale 1ns/1ps module EX_MEM ( input clock, input [1:0] ctlwb_out, input [2:0] ctlm_out, input aluzero, input [31:0] addout, aluout, readdat2, input [4:0] muxout, output reg [1:0] wbout, output reg MemRead, MemWrite, MEM_Branch, output reg [31:0] add_result, output reg zero_out, output reg [31:0] alu_result, output reg [31:0] rdata2out, output reg [4:0] five_bit_muxout ); reg temp; initial begin //wbout <=0; //MemRead <= 0; //MemWrite <= 0; //MEM_Branch <= 0; add_result <= 0; temp <= 0; #16 temp <= 1; //zero_out <= 0; //alu_result <=0; //rdata2out <= 0; //five_bit_muxout <= 0; end always @(posedge clock) begin wbout <= ctlwb_out; MemRead <= ctlm_out[1]; MemWrite <= ctlm_out[0]; MEM_Branch <= ctlm_out[2]; if (temp === 1) add_result <= addout; zero_out <= aluzero; alu_result <= aluout; rdata2out <= readdat2; five_bit_muxout <= muxout; end endmodule Main Module `timescale 1ns/1ps module EX(clock, WB1, M1, RegDst, ALUop, ALUsrc, ADD10, ALU0, MUX0, IR, BOTMUX0, BOTMUX1, WB2, MEMwrite, MEMread, MEMbranch, EX_MEM_NPC, Zero, DataAdress, WriteData, muxout); input clock; input [1:0] WB1; input [2:0] M1; input RegDst; input [1:0] ALUop; input ALUsrc; input [31:0] ADD10, ALU0, MUX0, IR; input [4:0] BOTMUX0, BOTMUX1; output [1:0] WB2; output MEMwrite, MEMread, MEMbranch; output [31:0] EX_MEM_NPC; output Zero; output [31:0] DataAdress, WriteData; output [4:0] muxout; wire [31:0] a0, a1, a3; wire [2:0] a2; wire a4; wire [4:0] a5; ALU_CONTROL alucon ( .ALUOp ( ALUop ), .funct ( IR[5:0] ), .contin ( a2 ) ); ADDER adder1 //created from last lab's incrementer ( .add_in1 (ADD10 ), .add_in2 (IR ), .add_out (a0 ) ); mux2to1 ALU_MUX ( .sel ( ALUsrc ), .a0 ( MUX0 ), .a1 ( IR ), .out ( a1 ) ); alu ALU ( .ctl ( a2 ), .a0 ( ALU0 ), .a1 ( a1 ), .Out ( a3 ), .Zero ( a4 ) ); fivebitmux BOTTOM_MUX ( .sel ( RegDst ), .a0 ( BOTMUX0 ), .a1 ( BOTMUX1 ), .out ( a5 ) ); EX_MEM EX_MEM1 ( .clock (clock ), .ctlwb_out ( WB1 ), .ctlm_out ( M1 ), .addout ( a0 ), .aluzero ( a4 ), .aluout ( a3 ), .readdat2 ( MUX0 ), .muxout ( a5 ), .wbout ( WB2 ), .MemRead ( MEMread ), .MemWrite ( MEMwrite ), .MEM_Branch ( MEMbranch ), .add_result ( EX_MEM_NPC ), .zero_out ( Zero ), .alu_result ( DataAdress ), .rdata2out ( WriteData ), .five_bit_muxout ( muxout ) ); endmodule Stage 4: MEMORY DataMem_MEMWB `timescale 1ns/1ps module D_MEM( input [31:0] Address, Write_data, input MemWrite, MemRead, output reg [31:0] Read_data ); reg [31:0] Data_memory [0:255]; initial begin Data_memory[0] <= 32'h002300AA; Data_memory[1] <= 32'h10654321; Data_memory[2] <= 32'h00100022; Data_memory[3] <= 32'h8C123456; Data_memory[4] <= 32'h8F123456; Data_memory[5] <= 32'hAD654321; Data_memory[6] <= 32'h13012345; Data_memory[7] <= 32'hAC654321; Data_memory[8] <= 32'h12012345; Data_memory[9] <= 32'h002300AA; Data_memory[10] <= 32'h10654321; Data_memory[11] <= 32'h00100022; Data_memory[12] <= 32'h8C123456; Data_memory[13] <= 32'h8F123456; Data_memory[14] <= 32'hAD654321; Data_memory[15] <= 32'h13012345; Data_memory[16] <= 32'hAC654321; Data_memory[17] <= 32'h12012345; Data_memory[18] <= 32'h002300AA; Data_memory[19] <= 32'h10654321; Data_memory[20] <= 32'h00100022; Data_memory[21] <= 32'h8C123456; Data_memory[22] <= 32'h8F123456; Data_memory[23] <= 32'hAD654321; Data_memory[24] <= 32'h13012345; Data_memory[25] <= 32'hAC654321; Data_memory[26] <= 32'h12012345; Data_memory[27] <= 32'h002300AA; Data_memory[28] <= 32'h10654321; Data_memory[29] <= 32'h00100022; Data_memory[30] <= 32'h8C123456; Data_memory[31] <= 32'h8F123456; /*Data_memory[32] <= 32'hAD654321; Data_memory[33] <= 32'h13012345; Data_memory[34] <= 32'hAC654321; Data_memory[35] <= 32'h12012345; Data_memory[36] <= 32'h002300AA; Data_memory[37] <= 32'h10654321; Data_memory[38] <= 32'h00100022; Data_memory[39] <= 32'h8C123456; Data_memory[40] <= 32'h8F123456; Data_memory[41] <= 32'hAD654321; Data_memory[42] <= 32'h13012345; Data_memory[43] <= 32'hAC654321; Data_memory[44] <= 32'h12012345; Data_memory[45] <= 32'h002300AA; Data_memory[56] <= 32'h10654321; Data_memory[47] <= 32'h00100022; Data_memory[48] <= 32'h8C123456; Data_memory[49] <= 32'h8F123456; Data_memory[50] <= 32'hAD654321; Data_memory[51] <= 32'h13012345; Data_memory[52] <= 32'hAC654321; Data_memory[53] <= 32'h12012345; Data_memory[54] <= 32'h002300AA; Data_memory[55] <= 32'h10654321; Data_memory[56] <= 32'h00100022; Data_memory[57] <= 32'h8C123456; Data_memory[58] <= 32'h8F123456; Data_memory[59] <= 32'hAD654321; Data_memory[60] <= 32'h13012345; Data_memory[61] <= 32'hAC654321; Data_memory[62] <= 32'h12012345; Data_memory[63] <= 32'h002300AA; Data_memory[64] <= 32'h10654321; Data_memory[65] <= 32'h00100022; Data_memory[66] <= 32'h8C123456; Data_memory[67] <= 32'h8F123456; Data_memory[68] <= 32'hAD654321; Data_memory[69] <= 32'h13012345; Data_memory[70] <= 32'hAC654321; Data_memory[71] <= 32'h12012345; Data_memory[72] <= 32'h002300AA; Data_memory[73] <= 32'h10654321; Data_memory[74] <= 32'h00100022; Data_memory[75] <= 32'h8C123456; Data_memory[76] <= 32'h8F123456; Data_memory[77] <= 32'hAD654321; Data_memory[78] <= 32'h13012345; Data_memory[79] <= 32'hAC654321; Data_memory[80] <= 32'h12012345; Data_memory[81] <= 32'h002300AA; Data_memory[82] <= 32'h10654321; Data_memory[83] <= 32'h00100022; Data_memory[84] <= 32'h8C123456; Data_memory[85] <= 32'h8F123456; Data_memory[86] <= 32'hAD654321; Data_memory[87] <= 32'h13012345; Data_memory[88] <= 32'hAC654321; Data_memory[89] <= 32'h12012345; Data_memory[90] <= 32'h002300AA; Data_memory[91] <= 32'h10654321; Data_memory[92] <= 32'h00100022; Data_memory[93] <= 32'h8C123456; Data_memory[94] <= 32'h8F123456; Data_memory[95] <= 32'hAD654321; Data_memory[96] <= 32'h13012345; Data_memory[97] <= 32'hAC654321; Data_memory[98] <= 32'h12012345; Data_memory[99] <= 32'h002300AA; Data_memory[100] <= 32'h10654321; Data_memory[101] <= 32'h00100022; Data_memory[102] <= 32'h8C123456; Data_memory[103] <= 32'h8F123456; Data_memory[104] <= 32'hAD654321; Data_memory[105] <= 32'h13012345; Data_memory[106] <= 32'hAC654321; Data_memory[107] <= 32'h12012345; Data_memory[108] <= 32'h002300AA; Data_memory[109] <= 32'h10654321; Data_memory[110] <= 32'h00100022; Data_memory[111] <= 32'h8C123456; Data_memory[112] <= 32'h8F123456; Data_memory[113] <= 32'hAD654321; Data_memory[114] <= 32'h13012345; Data_memory[115] <= 32'hAC654321; Data_memory[116] <= 32'h12012345; Data_memory[117] <= 32'h002300AA; Data_memory[118] <= 32'h10654321; Data_memory[119] <= 32'h00100022; Data_memory[120] <= 32'h8C123456; Data_memory[121] <= 32'h8F123456; Data_memory[122] <= 32'hAD654321; Data_memory[123] <= 32'h13012345; Data_memory[124] <= 32'hAC654321; Data_memory[125] <= 32'h12012345; Data_memory[126] <= 32'h002300AA; Data_memory[127] <= 32'h10654321; Data_memory[128] <= 32'h00100022; Data_memory[129] <= 32'h8C123456; Data_memory[130] <= 32'h8F123456; Data_memory[131] <= 32'hAD654321; Data_memory[132] <= 32'h13012345; Data_memory[133] <= 32'hAC654321; Data_memory[134] <= 32'h12012345; Data_memory[135] <= 32'h002300AA; Data_memory[136] <= 32'h10654321; Data_memory[137] <= 32'h00100022; Data_memory[138] <= 32'h8C123456; Data_memory[139] <= 32'h8F123456; Data_memory[140] <= 32'hAD654321; Data_memory[141] <= 32'h13012345; Data_memory[142] <= 32'hAC654321; Data_memory[143] <= 32'h12012345;*/ end always @ (MemRead or Address or MemWrite or Write_data) begin if (MemRead) begin Read_data <= Data_memory[Address]; end else begin Read_data <= 32'd0; end if (MemWrite) begin Data_memory[Address] <= Write_data; end end endmodule AND `timescale 1ns/1ps module AND( input ALU_zero, MEM_LATCH, output reg PCSrc ); reg temp; initial begin PCSrc <= 0; end always @ (ALU_zero or MEM_LATCH) begin temp <= ALU_zero && MEM_LATCH; if (temp) begin PCSrc <= 1; end else begin PCSrc <=0; end end endmodule MEM_WB Register `timescale 1ns/1ps module MEM_WB ( input clk, input [1:0] control_wb_in, input [31:0] Read_data_in, ALU_result_in, input [4:0] Write_reg_in, output reg RegWrite, output reg Mem2Reg, output reg [31:0] Read_data, mem_ALU_result, output reg [4:0] mem_Write_reg ); /*initial begin RegWrite <= 1'd0; Mem2Reg <= 1'd0; Read_data <= 32'd0; mem_ALU_result <= 32'd0; mem_Write_reg <= 5'd0; end*/ always @ (posedge clk) begin RegWrite <= control_wb_in[1]; Mem2Reg <= control_wb_in[0]; Read_data <= Read_data_in; mem_ALU_result <= ALU_result_in; mem_Write_reg <= Write_reg_in; end endmodule Main `timescale 1ns/1ps module MEM(clock, WB2, MEMwrite, MEMread, MEMbranch, Zero, DataAdress, WriteData, muxout, PC_choose, MUXSEL, RegWrite, LMUX0, LMUX1, Write_reg ); input clock; input [1:0] WB2; input MEMwrite, MEMread, MEMbranch; input Zero; input [31:0] DataAdress, WriteData; input [4:0] muxout; output PC_choose, MUXSEL, RegWrite; output [31:0] LMUX0, LMUX1; output [4:0] Write_reg; wire [31:0] a0, a1, a2; D_MEM DataMemMEMWB ( .Address (DataAdress ), .Write_data (WriteData ), .MemWrite (MEMwrite ), .MemRead (MEMread ), .Read_data (a0 ) ); AND AndGate ( .ALU_zero (Zero ), .MEM_LATCH (MEMbranch ), .PCSrc (PC_choose ) ); MEM_WB MEMWBRegister ( .clk (clock ), .control_wb_in (WB2 ), .Read_data_in (a0 ), .ALU_result_in (DataAdress ), .Write_reg_in (muxout ), .RegWrite (RegWrite), .Mem2Reg (MUXSEL), .Read_data (LMUX1), .mem_ALU_result (LMUX0), .mem_Write_reg (Write_reg) ); endmodule Stage 5: WRITE BACK Mux `timescale 1ns/1ps module mux2to1 (sel, a0, a1, out); input sel; input [31:0] a0, a1; output reg [31:0] out; /*initial begin out <= 31'd0; #10 out <= 31'd1; #10 out <= 31'd2; end*/ always @ (sel or a0 or a1) begin case(sel) 0:out = a0; 1:out = a1; endcase end Endmodule Main `timescale 1ns/1ps module WB( MUXSEL, LMUX0, LMUX1, WB_mux); input MUXSEL; input [31:0] LMUX0, LMUX1; output [31:0] WB_mux; mux2to1 con ( .sel (MUXSEL ), .a0 (LMUX0 ), .a1 (LMUX1 ), .out (WB_mux ) ); endmodule Main Module `timescale 1ns/1ps module Final_Testbench (onswitch, clk, LED1); input onswitch; input clk; output reg LED1; //IF output wires wire [31:0] IF_ID_IR, IF_ID_NPC; //ID output wires wire [1:0] WB1; wire [2:0] M1; wire RegDst; wire [1:0] ALUop; wire ALUsrc; wire [31:0] ADD10, ALU0, MUX0, IR; wire [4:0] BOTMUX0, BOTMUX1; // EX output wires wire [1:0] WB2; wire MEMwrite, MEMread, MEMbranch; wire [31:0] EX_MEM_NPC; wire Zero; wire [31:0] DataAdress, WriteData; wire [4:0] muxout; // MEM output wires wire PC_choose, MUXSEL, RegWrite; wire [31:0] LMUX0, LMUX1; wire [4:0] Write_reg; //WB wires wire [31:0] WB_mux; IF if1 ( .PC_choose(PC_choose), .EX_MEM_NPC(EX_MEM_NPC), .IF_ID_IR(IF_ID_IR ), .IF_ID_NPC(IF_ID_NPC ), .clock(clk) ); ID id1 ( .clock(clk), .IF_ID_IR(IF_ID_IR), .IF_ID_NPC(IF_ID_NPC), .RegWrite(RegWrite), .Write_reg(Write_reg), .Write_data(WB_mux), .WB1(WB1), .M1(M1), .RegDst(RegDst), .ALUop(ALUop), .ALUsrc(ALUsrc), .ADD10(ADD10), .ALU0(ALU0), .MUX0(MUX0), .IR(IR), .BOTMUX0(BOTMUX0), .BOTMUX1(BOTMUX1) ); EX ex1 ( .clock(clk), .WB1(WB1), .M1(M1), .RegDst(RegDst), .ALUop(ALUop), .ALUsrc(ALUsrc), .ADD10(ADD10), .ALU0(ALU0), .MUX0(MUX0), .IR(IR), .BOTMUX0(BOTMUX0), .BOTMUX1(BOTMUX1), .WB2(WB2), .MEMwrite(MEMwrite), .MEMread(MEMread), .MEMbranch(MEMbranch), .EX_MEM_NPC( EX_MEM_NPC), .Zero(Zero), .DataAdress(DataAdress), .WriteData(WriteData), .muxout(muxout) ); MEM mem1 ( .clock(clk), .WB2(WB2), .MEMwrite(MEMwrite), .MEMread(MEMread), .MEMbranch(MEMbranch), .Zero(Zero), .DataAdress(DataAdress), .WriteData(WriteData), .muxout(muxout), .PC_choose(PC_choose), .MUXSEL(MUXSEL), .RegWrite(RegWrite), .LMUX0( LMUX0), .LMUX1(LMUX1), .Write_reg(Write_reg) ); WB wb1 ( .MUXSEL(MUXSEL), .LMUX0(LMUX0), .LMUX1(LMUX1), .WB_mux(WB_mux) ); always begin if (WB_mux) LED1 <= WB_mux[0]; end endmodule Constraints ## This file is a general .xdc for the ZYBO Rev B board ## To use it in a project: ## - uncomment the lines corresponding to used pins ## - rename the used signals according to the project ##Clock signal ##IO_L11P_T1_SRCC_35 set_property PACKAGE_PIN L16 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports clk] ##Switches ##IO_L19N_T3_VREF_35 set_property PACKAGE_PIN G15 [get_ports onswitch] set_property IOSTANDARD LVCMOS33 [get_ports onswitch] ##IO_L24P_T3_34 #set_property PACKAGE_PIN P15 [get_ports {sw[1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}] ##IO_L4N_T0_34 #set_property PACKAGE_PIN W13 [get_ports {sw[2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}] ##IO_L9P_T1_DQS_34 #set_property PACKAGE_PIN T16 [get_ports {sw[3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}] ##Buttons ##IO_L20N_T3_34 #set_property PACKAGE_PIN R18 [get_ports {btn[0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {btn[0]}] ##IO_L24N_T3_34 #set_property PACKAGE_PIN P16 [get_ports {btn[1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {btn[1]}] ##IO_L18P_T2_34 #set_property PACKAGE_PIN V16 [get_ports {btn[2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {btn[2]}] ##IO_L7P_T1_34 #set_property PACKAGE_PIN Y16 [get_ports {btn[3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {btn[3]}] ##LEDs ##IO_L23P_T3_35 set_property PACKAGE_PIN M14 [get_ports LED1] set_property IOSTANDARD LVCMOS33 [get_ports LED1] Waveform In the waveform, it can be seen that most values are initially undefined within the system. This is because the information hasn’t yet rippled through the pipeline to populate the fields. Each chunk that changes from red to green is representative of a stage's outputs. Interestingly, after each field has been populated, we still experience some undefined segments. We believe that this is a result of the address that is passed to the memory in the memory stage being too large, leading the program to try to lookup an address that isn’t defined. This carries over to the LED being undefined for this portion because it is controlled by the least significant bit of the result of the writeback stage mux, which is an undefined value. Other than that, the values shown in the diagram seem to indicate that the system works as intended. Also from the graph, you can see the the PC_select bit initialized. This was done because we needed a way for the mux in the instruction fetch stage to know which address to pass, for the first couple of cycles. Although it passes values not obtained from analyzing instructions, its correctness is assured because it can safely be assumed that you would never want to jump before evaluating a branch command. Design Schematic This is the diagram of the MIPS architecture discussed previously. You can plainly see the stages of the pipeline marked by each of the five rectangles, and the variables being passed between each stage are clearly highlighted. The only true input to the system is the clock, since the rest is a cyclical, self-sustaining system, at least in this case where memory addresses are predefined. You can also see an additional input and an output system. These are a result of putting the whole architecture on to the programmable board. The input is the switch we set in the constraint file, and the LED, likewise, is the output we set in the constraint file. The system that leads from the WB stage to the LED is likely just a way to clarify the relevant data into the bit stream that was required to work the LED. This shows that it was actually integrated into the system, and not simply a separate program running in conjunction to the MIPS project file. This diagram is a pictorial representation of our code, and it’s also an exact replica of the architecture we discussed ad nauseum in class. This diagram is that surefire example of our success. Snapshot of the Routed Design This is the routed design created from the synthesis and implementation of our project. The lights show activity on our board: which portions are activated and in use. Previous labs only saw small sections of the board lit up, but when the whole system is connected together we can the effects of this on the actual hardware become obvious. We’ve created a complex and integral system and successfully ran it on real life hardware. Reports Timing Report Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------| Tool Version : Vivado v.2015.3 (win64) Build 1368829 Mon Sep 28 20:06:43 MDT 2015 | Date : Fri May 06 11:00:39 2016 | Host : CSE-P220INST22 running 64-bit major release (build 9200) | Command : report_timing_summary -warn_on_violation -max_paths 10 -file Final_Testbench_timing_summary_routed.rpt -rpx Final_Testbench_timing_summary_routed.rpx | Design : Final_Testbench | Device : 7z010-clg400 | Speed File : -1 PRODUCTION 1.11 2014-09-11 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Timing Summary Report -----------------------------------------------------------------------------------------------| Timer Settings | ------------------------------------------------------------------------------------------------------------Enable Multi Corner Analysis : Yes Enable Pessimism Removal : Yes Pessimism Removal Resolution : Nearest Common Node Enable Input Delay Default Clock : No Enable Preset / Clear Arcs : No Disable Flight Delays : No Ignore I/O Paths : No Timing Early Launch at Borrowing Latches : false Corner Analyze Analyze Name Max Paths Min Paths ------ --------- --------Slow Yes Yes Fast Yes Yes check_timing report Table of Contents ----------------1. checking no_clock 2. checking constant_clock 3. checking pulse_width_clock 4. checking unconstrained_internal_endpoints 5. checking no_input_delay 6. checking no_output_delay 7. checking multiple_clock 8. checking generated_clocks 9. checking loops 10. checking partial_input_delay 11. checking partial_output_delay 12. checking latch_loops 1. checking no_clock -------------------- There are 2048 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/MemWrite_reg/C (HIGH) There are 2048 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/MemWrite_reg_rep/C (HIGH) There are 2048 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/MemWrite_reg_rep__0/C (HIGH) There are 2048 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/MemWrite_reg_rep__1/C (HIGH) There are 3968 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[0]/C (HIGH) There are 3104 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[0]_rep/C (HIGH) There are 448 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[0]_rep__11/C (HIGH) There are 672 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[0]_rep__7/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[10]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[11]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[12]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[13]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[14]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[15]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[16]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[17]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[18]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[19]/C (HIGH) There are 3904 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[1]/C (HIGH) There are 4288 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[1]_rep/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[20]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[21]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[22]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[23]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[24]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[25]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[26]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[27]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[28]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[29]/C (HIGH) There are 7104 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[2]/C (HIGH) There are 1088 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[2]_rep/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[30]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[31]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[3]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[4]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[5]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[6]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[7]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[8]/C (HIGH) There are 8192 register/latch pins with no clock driven by root clock pin: ex1/EX_MEM1/alu_result_reg[9]/C (HIGH) There are 33 register/latch pins with no clock driven by root clock pin: ex1/alucon/contin_reg[0]/G (HIGH) There are 33 register/latch pins with no clock driven by root clock pin: ex1/alucon/contin_reg[1]/G (HIGH) There are 33 register/latch pins with no clock driven by root clock pin: ex1/alucon/contin_reg[2]/G (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/ALUOp_reg[0]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/ALUOp_reg[1]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[0]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[1]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[2]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[3]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[4]/C (HIGH) There are 3 register/latch pins with no clock driven by root clock pin: id1/ID_LATCH/s_extendout_reg[5]/C (HIGH) There are 7 register/latch pins with no clock driven by root clock pin: if1/IF_LATCH/instout_reg/CLKBWRCLK (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Mem2Reg_reg/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[0]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[10]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[11]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[12]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[13]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[14]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[15]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[16]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[17]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[18]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[19]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[1]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[20]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[21]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[22]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[23]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[24]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[25]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[26]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[27]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[28]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[29]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[2]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[30]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[31]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[3]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[4]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[5]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[6]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[7]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[8]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/Read_data_reg[9]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/RegWrite_reg__0/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[0]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[10]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[11]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[12]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[13]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[14]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[15]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[16]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[17]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[18]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[19]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[1]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[20]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[21]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[22]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[23]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[24]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[25]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[26]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[27]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[28]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[29]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[2]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[30]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[31]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[3]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[4]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[5]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[6]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[7]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[8]/C (HIGH) There is 1 register/latch pin with no clock driven by root clock pin: mem1/MEMWBRegister/mem_ALU_result_reg[9]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/mem_Write_reg_reg[0]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/mem_Write_reg_reg[1]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/mem_Write_reg_reg[2]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/mem_Write_reg_reg[3]/C (HIGH) There are 1024 register/latch pins with no clock driven by root clock pin: mem1/MEMWBRegister/mem_Write_reg_reg[4]/C (HIGH) 2. checking constant_clock -------------------------There are 0 register/latch pins with constant_clock. 3. checking pulse_width_clock ----------------------------There are 0 register/latch pins which need pulse_width check 4. checking unconstrained_internal_endpoints -------------------------------------------There are 9260 pins that are not constrained for maximum delay. (HIGH) There are 0 pins that are not constrained for maximum delay due to constant clock. 5. checking no_input_delay -------------------------- There are 0 input ports with no input delay specified. There are 0 input ports with no input delay but user has a false path constraint. 6. checking no_output_delay --------------------------There is 1 port with no output delay specified. (HIGH) There are 0 ports with no output delay but user has a false path constraint There are 0 ports with no output delay but with a timing clock defined on it or propagating through it 7. checking multiple_clock -------------------------There are 0 register/latch pins with multiple clocks. 8. checking generated_clocks ---------------------------There are 0 generated clocks that are not connected to a clock source. 9. checking loops ----------------There are 0 combinational loops in the design. 10. checking partial_input_delay -------------------------------There are 0 input ports with partial input delay specified. 11. checking partial_output_delay --------------------------------There are 0 ports with partial output delay specified. 12. checking latch_loops -----------------------There are 0 combinational latch loops in the design through latch input -----------------------------------------------------------------------------------------------| Design Timing Summary | -------------------------------------------------------------------------------------------------------------------WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints ------- ------- --------------------- ------------------------- ------- --------------------- ------------------------- -------- ---------------------- -------------------0.485 0.000 0 352 0.071 0.000 0 352 3.020 0.000 0 403 All user specified timing constraints are met. -----------------------------------------------------------------------------------------------| Clock Summary | -----------------------------------------------------------------------------------------------------------Clock Waveform(ns) Period(ns) Frequency(MHz) -------------------------------------sys_clk_pin {0.000 4.000} 8.000 125.000 -----------------------------------------------------------------------------------------------| Intra Clock Table | ---------------------------------------------------------------------------------------------------------------Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints ----------- ------- --------------------- ------------------------- ------- -------------------- -------------------------- -------- ---------------------- -------------------sys_clk_pin 0.485 0.000 0 352 0.071 0.000 0 352 3.020 0.000 0 403 -----------------------------------------------------------------------------------------------| Inter Clock Table | ---------------------------------------------------------------------------------------------------------------From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints ----------------------- ------- --------------------- ------------------------- ------- -------------------- ------------------- -----------------------------------------------------------------------------------------------| Other Path Groups Table | ---------------------------------------------------------------------------------------------------------------------Path Group From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints -------------------------------- ------- --------------------- ------------------------- ------- --------------------- ------------------- -----------------------------------------------------------------------------------------------| Timing Details | ------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------From Clock: sys_clk_pin To Clock: sys_clk_pin Setup : 0 Failing Endpoints, Worst Slack 0.485ns, Total Violation Hold : 0 Failing Endpoints, Worst Slack 0.071ns, Total Violation PW : 0 Failing Endpoints, Worst Slack 3.020ns, Total Violation --------------------------------------------------------------------------------------------------- 0.000ns 0.000ns 0.000ns Max Delay Paths -------------------------------------------------------------------------------------Slack (MET) : 0.485ns (required time - arrival time) Source: ex1/EX_MEM1/alu_result_reg[6]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[17]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.358ns (logic 0.991ns (13.469%) route 6.367ns (86.531%)) Logic Levels: 2 (MUXF7=1 MUXF8=1) Clock Path Skew: -0.186ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.673ns = ( 12.673 - 8.000 ) Source Clock Delay (SCD): 5.117ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.665 5.117 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X15Y21 FDRE r ex1/EX_MEM1/alu_result_reg[6]/C ------------------------------------------------------------------- ------------------SLICE_X15Y21 FDRE (Prop_fdre_C_Q) 0.419 5.536 r ex1/EX_MEM1/alu_result_reg[6]/Q net (fo=180, routed) 6.367 11.903 mem1/DataMemMEMWB/D[6] SLICE_X18Y82 MUXF7 (Prop_muxf7_S_O) 0.468 12.371 r mem1/DataMemMEMWB/Read_data_reg[17]_i_2/O net (fo=1, routed) 0.000 12.371 mem1/DataMemMEMWB/Read_data_reg[17]_i_2_n_7 SLICE_X18Y82 MUXF8 (Prop_muxf8_I0_O) 0.104 12.475 r mem1/DataMemMEMWB/Read_data_reg[17]_i_1/O net (fo=1, routed) 0.000 12.475 mem1/MEMWBRegister/Data_memory[17] SLICE_X18Y82 FDRE r mem1/MEMWBRegister/Read_data_reg[17]/D ------------------------------------------------------------------- ------------------- (clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.479 12.673 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X18Y82 FDRE r mem1/MEMWBRegister/Read_data_reg[17]/C clock pessimism 0.258 12.931 clock uncertainty -0.035 12.896 SLICE_X18Y82 FDRE (Setup_fdre_C_D) 0.064 12.960 mem1/MEMWBRegister/Read_data_reg[17] ------------------------------------------------------------------required time 12.960 arrival time -12.475 ------------------------------------------------------------------slack 0.485 Slack (MET) : Source: 0.628ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[6]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[29]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.208ns (logic 0.991ns (13.749%) route 6.217ns (86.251%)) Logic Levels: 2 (MUXF7=1 MUXF8=1) Clock Path Skew: -0.193ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.666ns = ( 12.666 - 8.000 ) Source Clock Delay (SCD): 5.117ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.665 5.117 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X15Y21 FDRE r ex1/EX_MEM1/alu_result_reg[6]/C ------------------------------------------------------------------- ------------------SLICE_X15Y21 FDRE (Prop_fdre_C_Q) 0.419 5.536 r ex1/EX_MEM1/alu_result_reg[6]/Q net (fo=180, routed) 6.217 11.753 mem1/DataMemMEMWB/D[6] SLICE_X18Y76 MUXF7 (Prop_muxf7_S_O) 0.468 12.221 r mem1/DataMemMEMWB/Read_data_reg[29]_i_2/O net (fo=1, routed) 0.000 12.221 mem1/DataMemMEMWB/Read_data_reg[29]_i_2_n_7 SLICE_X18Y76 MUXF8 (Prop_muxf8_I0_O) 0.104 12.325 r mem1/DataMemMEMWB/Read_data_reg[29]_i_1/O net (fo=1, routed) 0.000 12.325 mem1/MEMWBRegister/Data_memory[29] SLICE_X18Y76 FDRE r mem1/MEMWBRegister/Read_data_reg[29]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.472 12.666 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X18Y76 FDRE r mem1/MEMWBRegister/Read_data_reg[29]/C clock pessimism 0.258 12.924 clock uncertainty -0.035 12.889 SLICE_X18Y76 FDRE (Setup_fdre_C_D) 0.064 12.953 mem1/MEMWBRegister/Read_data_reg[29] ------------------------------------------------------------------required time 12.953 arrival time -12.325 ------------------------------------------------------------------slack 0.628 Slack (MET) : Source: 0.672ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[22]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.160ns (logic 0.928ns (12.961%) route 6.232ns (87.039%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.197ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.672ns = ( 12.672 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.232 11.837 mem1/DataMemMEMWB/D[7] SLICE_X23Y87 MUXF8 (Prop_muxf8_S_O) 0.450 12.287 r mem1/DataMemMEMWB/Read_data_reg[22]_i_1/O net (fo=1, routed) 0.000 12.287 mem1/MEMWBRegister/Data_memory[22] SLICE_X23Y87 FDRE r mem1/MEMWBRegister/Read_data_reg[22]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.478 12.672 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X23Y87 FDRE r mem1/MEMWBRegister/Read_data_reg[22]/C clock pessimism 0.258 12.930 clock uncertainty -0.035 12.895 SLICE_X23Y87 FDRE (Setup_fdre_C_D) 0.064 12.959 mem1/MEMWBRegister/Read_data_reg[22] ------------------------------------------------------------------required time 12.959 arrival time -12.287 ------------------------------------------------------------------slack 0.672 Slack (MET) : Source: 0.715ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[6]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[16]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.124ns (logic 0.991ns (13.911%) route 6.133ns (86.089%)) Logic Levels: 2 (MUXF7=1 MUXF8=1) Clock Path Skew: -0.189ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.670ns = ( 12.670 - 8.000 ) Source Clock Delay (SCD): 5.117ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.665 5.117 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X15Y21 FDRE r ex1/EX_MEM1/alu_result_reg[6]/C ------------------------------------------------------------------- ------------------SLICE_X15Y21 FDRE (Prop_fdre_C_Q) 0.419 5.536 r ex1/EX_MEM1/alu_result_reg[6]/Q net (fo=180, routed) 6.133 11.669 mem1/DataMemMEMWB/D[6] SLICE_X18Y69 MUXF7 (Prop_muxf7_S_O) 0.468 12.137 r mem1/DataMemMEMWB/Read_data_reg[16]_i_2/O net (fo=1, routed) 0.000 12.137 mem1/DataMemMEMWB/Read_data_reg[16]_i_2_n_7 SLICE_X18Y69 MUXF8 (Prop_muxf8_I0_O) 0.104 12.241 r mem1/DataMemMEMWB/Read_data_reg[16]_i_1/O net (fo=1, routed) 0.000 12.241 mem1/MEMWBRegister/Data_memory[16] SLICE_X18Y69 FDRE r mem1/MEMWBRegister/Read_data_reg[16]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.476 12.670 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X18Y69 FDRE r mem1/MEMWBRegister/Read_data_reg[16]/C clock pessimism 0.258 12.928 clock uncertainty -0.035 12.893 SLICE_X18Y69 FDRE (Setup_fdre_C_D) 0.064 12.957 mem1/MEMWBRegister/Read_data_reg[16] ------------------------------------------------------------------required time 12.957 arrival time -12.241 ------------------------------------------------------------------slack 0.715 Slack (MET) : Source: 0.725ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[21]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.105ns (logic 0.928ns (13.062%) route 6.177ns (86.938%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.199ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.670ns = ( 12.670 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.177 11.782 mem1/DataMemMEMWB/D[7] SLICE_X22Y84 MUXF8 (Prop_muxf8_S_O) 0.450 12.232 r mem1/DataMemMEMWB/Read_data_reg[21]_i_1/O net (fo=1, routed) 0.000 12.232 mem1/MEMWBRegister/Data_memory[21] SLICE_X22Y84 FDRE r mem1/MEMWBRegister/Read_data_reg[21]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.476 12.670 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X22Y84 FDRE r mem1/MEMWBRegister/Read_data_reg[21]/C clock pessimism 0.258 12.928 clock uncertainty -0.035 12.893 SLICE_X22Y84 FDRE (Setup_fdre_C_D) 0.064 12.957 mem1/MEMWBRegister/Read_data_reg[21] ------------------------------------------------------------------required time 12.957 arrival time -12.232 ------------------------------------------------------------------slack 0.725 Slack (MET) : Source: 0.726ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[19]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.156ns (logic 0.938ns (13.108%) route 6.218ns (86.892%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.195ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.674ns = ( 12.674 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.218 11.823 mem1/DataMemMEMWB/D[7] SLICE_X24Y90 MUXF8 (Prop_muxf8_S_O) 0.460 12.283 r mem1/DataMemMEMWB/Read_data_reg[19]_i_1/O net (fo=1, routed) 0.000 12.283 mem1/MEMWBRegister/Data_memory[19] SLICE_X24Y90 FDRE r mem1/MEMWBRegister/Read_data_reg[19]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.480 12.674 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X24Y90 FDRE r mem1/MEMWBRegister/Read_data_reg[19]/C clock pessimism 0.258 12.932 clock uncertainty -0.035 12.897 SLICE_X24Y90 FDRE (Setup_fdre_C_D) 0.113 13.010 mem1/MEMWBRegister/Read_data_reg[19] ------------------------------------------------------------------required time 13.010 arrival time -12.283 ------------------------------------------------------------------slack 0.726 Slack (MET) : Source: 0.748ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[28]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.090ns (logic 0.928ns (13.089%) route 6.162ns (86.911%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.191ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.678ns = ( 12.678 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.162 11.767 mem1/DataMemMEMWB/D[7] SLICE_X21Y90 MUXF8 (Prop_muxf8_S_O) 0.450 12.217 r mem1/DataMemMEMWB/Read_data_reg[28]_i_1/O net (fo=1, routed) 0.000 12.217 mem1/MEMWBRegister/Data_memory[28] SLICE_X21Y90 FDRE r mem1/MEMWBRegister/Read_data_reg[28]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.484 12.678 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X21Y90 FDRE r mem1/MEMWBRegister/Read_data_reg[28]/C clock pessimism 0.258 12.936 clock uncertainty -0.035 12.901 SLICE_X21Y90 FDRE (Setup_fdre_C_D) 0.064 12.965 mem1/MEMWBRegister/Read_data_reg[28] ------------------------------------------------------------------required time 12.965 arrival time -12.217 ------------------------------------------------------------------slack 0.748 Slack (MET) : Source: 0.799ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[26]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.032ns (logic 0.928ns (13.197%) route 6.104ns (86.803%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.198ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.671ns = ( 12.671 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.104 11.709 mem1/DataMemMEMWB/D[7] SLICE_X22Y86 MUXF8 (Prop_muxf8_S_O) 0.450 12.159 r mem1/DataMemMEMWB/Read_data_reg[26]_i_1/O net (fo=1, routed) 0.000 12.159 mem1/MEMWBRegister/Data_memory[26] SLICE_X22Y86 FDRE r mem1/MEMWBRegister/Read_data_reg[26]/D ------------------------------------------------------------------- ------------------- L16 L16 (clock sys_clk_pin rise edge) 8.000 8.000 r 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.477 12.671 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X22Y86 FDRE r mem1/MEMWBRegister/Read_data_reg[26]/C clock pessimism 0.258 12.929 clock uncertainty -0.035 12.894 SLICE_X22Y86 FDRE (Setup_fdre_C_D) 0.064 12.958 mem1/MEMWBRegister/Read_data_reg[26] ------------------------------------------------------------------required time 12.958 arrival time -12.159 ------------------------------------------------------------------slack 0.799 Slack (MET) : Source: 0.804ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[7]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[24]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 7.027ns (logic 0.928ns (13.207%) route 6.099ns (86.793%)) Logic Levels: 1 (MUXF8=1) Clock Path Skew: -0.198ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.671ns = ( 12.671 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[7]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[7]/Q net (fo=141, routed) 6.099 11.704 mem1/DataMemMEMWB/D[7] SLICE_X25Y86 MUXF8 (Prop_muxf8_S_O) 0.450 12.154 r mem1/DataMemMEMWB/Read_data_reg[24]_i_1/O net (fo=1, routed) 0.000 12.154 mem1/MEMWBRegister/Data_memory[24] SLICE_X25Y86 FDRE r mem1/MEMWBRegister/Read_data_reg[24]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.477 12.671 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X25Y86 FDRE r mem1/MEMWBRegister/Read_data_reg[24]/C clock pessimism 0.258 12.929 clock uncertainty -0.035 12.894 SLICE_X25Y86 FDRE (Setup_fdre_C_D) 0.064 12.958 mem1/MEMWBRegister/Read_data_reg[24] ------------------------------------------------------------------required time 12.958 arrival time -12.154 ------------------------------------------------------------------slack 0.804 Slack (MET) : Source: 0.887ns (required time - arrival time) ex1/EX_MEM1/alu_result_reg[5]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/Read_data_reg[23]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (sys_clk_pin rise@8.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 6.990ns (logic 1.112ns (15.908%) route 5.878ns (84.092%)) Logic Levels: 3 (LUT6=1 MUXF7=1 MUXF8=1) Clock Path Skew: -0.200ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.669ns = ( 12.669 - 8.000 ) Source Clock Delay (SCD): 5.127ns Clock Pessimism Removal (CPR): 0.258ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 1.491 1.491 r clk_IBUF_inst/O net (fo=1, routed) 1.860 3.351 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.101 3.452 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.675 5.127 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X10Y17 FDRE r ex1/EX_MEM1/alu_result_reg[5]/C ------------------------------------------------------------------- ------------------SLICE_X10Y17 FDRE (Prop_fdre_C_Q) 0.478 5.605 r ex1/EX_MEM1/alu_result_reg[5]/Q net (fo=260, routed) 5.878 11.484 mem1/DataMemMEMWB/D[5] SLICE_X24Y83 LUT6 (Prop_lut6_I2_O) 0.295 11.779 r mem1/DataMemMEMWB/Read_data[23]_i_4/O net (fo=1, routed) 0.000 11.779 mem1/DataMemMEMWB/Read_data[23]_i_4_n_7 SLICE_X24Y83 MUXF7 (Prop_muxf7_I0_O) 0.241 12.020 r mem1/DataMemMEMWB/Read_data_reg[23]_i_2/O net (fo=1, routed) 0.000 12.020 mem1/DataMemMEMWB/Read_data_reg[23]_i_2_n_7 SLICE_X24Y83 MUXF8 (Prop_muxf8_I0_O) 0.098 12.118 r mem1/DataMemMEMWB/Read_data_reg[23]_i_1/O net (fo=1, routed) 0.000 12.118 mem1/MEMWBRegister/Data_memory[23] SLICE_X24Y83 FDRE r mem1/MEMWBRegister/Read_data_reg[23]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 8.000 8.000 r L16 0.000 8.000 r clk (IN) net (fo=0) 0.000 8.000 clk L16 IBUF (Prop_ibuf_I_O) 1.421 9.421 r clk_IBUF_inst/O net (fo=1, routed) 1.683 11.104 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.091 11.195 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 1.475 12.669 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X24Y83 FDRE r mem1/MEMWBRegister/Read_data_reg[23]/C clock pessimism 0.258 12.927 clock uncertainty -0.035 12.892 SLICE_X24Y83 FDRE (Setup_fdre_C_D) 0.113 13.005 mem1/MEMWBRegister/Read_data_reg[23] ------------------------------------------------------------------required time 13.005 arrival time -12.118 ------------------------------------------------------------------slack 0.887 Min Delay Paths -------------------------------------------------------------------------------------Slack (MET) : 0.071ns (arrival time - required time) Source: id1/ID_LATCH/readdat2out_reg[9]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: ex1/EX_MEM1/rdata2out_reg[9]_rep__1/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.381ns (logic 0.164ns (43.015%) route 0.217ns (56.985%)) Logic Levels: 0 Clock Path Skew: 0.263ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.895ns Source Clock Delay (SCD): 1.392ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.549 1.392 id1/ID_LATCH/clk_IBUF_BUFG SLICE_X20Y25 FDRE r id1/ID_LATCH/readdat2out_reg[9]/C ------------------------------------------------------------------- ------------------SLICE_X20Y25 FDRE (Prop_fdre_C_Q) 0.164 1.556 r id1/ID_LATCH/readdat2out_reg[9]/Q net (fo=10, routed) 0.217 1.773 ex1/EX_MEM1/readdat2out_reg[31][9] SLICE_X23Y27 FDRE r ex1/EX_MEM1/rdata2out_reg[9]_rep__1/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.817 1.895 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X23Y27 FDRE r ex1/EX_MEM1/rdata2out_reg[9]_rep__1/C clock pessimism -0.240 1.655 SLICE_X23Y27 FDRE (Hold_fdre_C_D) 0.047 1.702 ex1/EX_MEM1/rdata2out_reg[9]_rep__1 ------------------------------------------------------------------required time -1.702 arrival time 1.773 ------------------------------------------------------------------slack 0.071 Slack (MET) : Source: 0.079ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[23]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[23]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.414ns (logic 0.141ns (34.076%) route 0.273ns (65.924%)) Logic Levels: 0 Clock Path Skew: 0.258ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.896ns Source Clock Delay (SCD): 1.398ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.555 1.398 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X14Y27 FDRE r ex1/EX_MEM1/alu_result_reg[23]/C ------------------------------------------------------------------- ------------------SLICE_X14Y27 FDRE (Prop_fdre_C_Q) 0.141 1.539 r ex1/EX_MEM1/alu_result_reg[23]/Q net (fo=6, routed) 0.273 1.812 mem1/MEMWBRegister/D[23] SLICE_X24Y28 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[23]/D ------------------------------------------------------------------- ------------------- L16 (clock sys_clk_pin rise edge) 0.000 0.000 r 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.818 1.896 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X24Y28 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[23]/C clock pessimism -0.240 1.656 SLICE_X24Y28 FDRE (Hold_fdre_C_D) 0.076 1.732 mem1/MEMWBRegister/mem_ALU_result_reg[23] ------------------------------------------------------------------required time -1.732 arrival time 1.812 ------------------------------------------------------------------slack 0.079 Slack (MET) : Source: 0.088ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[15]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[15]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.421ns (logic 0.141ns (33.457%) route 0.280ns (66.543%)) Logic Levels: 0 Clock Path Skew: 0.257ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.892ns Source Clock Delay (SCD): 1.395ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.552 1.395 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X17Y25 FDRE r ex1/EX_MEM1/alu_result_reg[15]/C ------------------------------------------------------------------- ------------------SLICE_X17Y25 FDRE (Prop_fdre_C_Q) 0.141 1.536 r ex1/EX_MEM1/alu_result_reg[15]/Q net (fo=5, routed) 0.280 1.816 mem1/MEMWBRegister/D[15] SLICE_X23Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[15]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.814 1.892 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X23Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[15]/C clock pessimism -0.240 1.652 SLICE_X23Y25 FDRE (Hold_fdre_C_D) 0.076 1.728 mem1/MEMWBRegister/mem_ALU_result_reg[15] ------------------------------------------------------------------required time -1.728 arrival time 1.816 ------------------------------------------------------------------slack 0.088 Slack (MET) : Source: 0.103ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[18]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[18]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.413ns (logic 0.141ns (34.132%) route 0.272ns (65.868%)) Logic Levels: 0 Clock Path Skew: 0.257ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.892ns Source Clock Delay (SCD): 1.395ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.552 1.395 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X17Y25 FDRE r ex1/EX_MEM1/alu_result_reg[18]/C ------------------------------------------------------------------- ------------------SLICE_X17Y25 FDRE (Prop_fdre_C_Q) 0.141 1.536 r ex1/EX_MEM1/alu_result_reg[18]/Q net (fo=2, routed) 0.272 1.808 mem1/MEMWBRegister/D[18] SLICE_X24Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[18]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.814 1.892 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X24Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[18]/C clock pessimism -0.240 1.652 SLICE_X24Y25 FDRE (Hold_fdre_C_D) 0.053 1.705 mem1/MEMWBRegister/mem_ALU_result_reg[18] ------------------------------------------------------------------- required time -1.705 arrival time 1.808 ------------------------------------------------------------------slack 0.103 Slack (MET) : Source: 0.112ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[14]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[14]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.429ns (logic 0.141ns (32.838%) route 0.288ns (67.162%)) Logic Levels: 0 Clock Path Skew: 0.257ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.892ns Source Clock Delay (SCD): 1.395ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.552 1.395 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X14Y24 FDRE r ex1/EX_MEM1/alu_result_reg[14]/C ------------------------------------------------------------------- ------------------SLICE_X14Y24 FDRE (Prop_fdre_C_Q) 0.141 1.536 r ex1/EX_MEM1/alu_result_reg[14]/Q net (fo=5, routed) 0.288 1.824 mem1/MEMWBRegister/D[14] SLICE_X24Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[14]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.814 1.892 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X24Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[14]/C clock pessimism -0.240 1.652 SLICE_X24Y25 FDRE (Hold_fdre_C_D) 0.060 1.712 mem1/MEMWBRegister/mem_ALU_result_reg[14] ------------------------------------------------------------------required time -1.712 arrival time 1.824 ------------------------------------------------------------------slack 0.112 Slack (MET) : Source: 0.173ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[4]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[4]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.452ns (logic 0.128ns (28.349%) route 0.324ns (71.651%)) Logic Levels: 0 Clock Path Skew: 0.254ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.892ns Source Clock Delay (SCD): 1.398ns Clock Pessimism Removal (CPR): 0.240ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.555 1.398 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X15Y21 FDRE r ex1/EX_MEM1/alu_result_reg[4]/C ------------------------------------------------------------------- ------------------SLICE_X15Y21 FDRE (Prop_fdre_C_Q) 0.128 1.526 r ex1/EX_MEM1/alu_result_reg[4]/Q net (fo=262, routed) 0.324 1.849 mem1/MEMWBRegister/D[4] SLICE_X23Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[4]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.814 1.892 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X23Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[4]/C clock pessimism -0.240 1.652 SLICE_X23Y25 FDRE (Hold_fdre_C_D) 0.024 1.676 mem1/MEMWBRegister/mem_ALU_result_reg[4] ------------------------------------------------------------------required time -1.676 arrival time 1.849 ------------------------------------------------------------------slack 0.173 Slack (MET) : Source: 0.174ns (arrival time - required time) ex1/EX_MEM1/alu_result_reg[17]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: mem1/MEMWBRegister/mem_ALU_result_reg[17]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.269ns (logic 0.141ns (52.330%) route 0.128ns (47.670%)) Logic Levels: 0 Clock Path Skew: 0.031ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.894ns Source Clock Delay (SCD): 1.395ns Clock Pessimism Removal (CPR): 0.468ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.552 1.395 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X17Y25 FDRE r ex1/EX_MEM1/alu_result_reg[17]/C ------------------------------------------------------------------- ------------------SLICE_X17Y25 FDRE (Prop_fdre_C_Q) 0.141 1.536 r ex1/EX_MEM1/alu_result_reg[17]/Q net (fo=2, routed) 0.128 1.664 mem1/MEMWBRegister/D[17] SLICE_X20Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[17]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.816 1.894 mem1/MEMWBRegister/clk_IBUF_BUFG SLICE_X20Y25 FDRE r mem1/MEMWBRegister/mem_ALU_result_reg[17]/C clock pessimism -0.468 1.426 SLICE_X20Y25 FDRE (Hold_fdre_C_D) 0.064 1.490 mem1/MEMWBRegister/mem_ALU_result_reg[17] ------------------------------------------------------------------- required time -1.490 arrival time 1.664 ------------------------------------------------------------------slack 0.174 Slack (MET) : Source: 0.183ns (arrival time - required time) ex1/EX_MEM1/add_result_reg[3]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: if1/IF_PROG/NPCout_reg[3]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.330ns (logic 0.250ns (75.734%) route 0.080ns (24.266%)) Logic Levels: 2 (CARRY4=1 LUT4=1) Clock Path Skew: 0.013ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.924ns Source Clock Delay (SCD): 1.423ns Clock Pessimism Removal (CPR): 0.488ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.580 1.423 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X5Y18 FDRE r ex1/EX_MEM1/add_result_reg[3]/C ------------------------------------------------------------------- ------------------SLICE_X5Y18 FDRE (Prop_fdre_C_Q) 0.141 1.564 r ex1/EX_MEM1/add_result_reg[3]/Q net (fo=1, routed) 0.080 1.644 ex1/EX_MEM1/add_result[3] SLICE_X4Y18 LUT4 (Prop_lut4_I0_O) 0.045 1.689 r ex1/EX_MEM1/NPCout[0]_i_3/O net (fo=1, routed) 0.000 1.689 ex1/EX_MEM1/NPCout[0]_i_3_n_7 SLICE_X4Y18 CARRY4 (Prop_carry4_S[3]_O[3]) 0.064 1.753 r ex1/EX_MEM1/NPCout_reg[0]_i_1/O[3] net (fo=1, routed) 0.000 1.753 if1/IF_PROG/O[3] SLICE_X4Y18 FDRE r if1/IF_PROG/NPCout_reg[3]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.846 1.924 if1/IF_PROG/clk_IBUF_BUFG SLICE_X4Y18 FDRE r if1/IF_PROG/NPCout_reg[3]/C clock pessimism -0.488 1.436 SLICE_X4Y18 FDRE (Hold_fdre_C_D) 0.134 1.570 if1/IF_PROG/NPCout_reg[3] ------------------------------------------------------------------required time -1.570 arrival time 1.753 ------------------------------------------------------------------slack 0.183 Slack (MET) : Source: 0.196ns (arrival time - required time) ex1/EX_MEM1/add_result_reg[0]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: if1/IF_PROG/NPCout_reg[0]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.343ns (logic 0.256ns (74.613%) route 0.087ns (25.387%)) Logic Levels: 2 (CARRY4=1 LUT4=1) Clock Path Skew: 0.013ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.924ns Source Clock Delay (SCD): 1.423ns Clock Pessimism Removal (CPR): 0.488ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.580 1.423 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X5Y18 FDRE r ex1/EX_MEM1/add_result_reg[0]/C ------------------------------------------------------------------- ------------------SLICE_X5Y18 FDRE (Prop_fdre_C_Q) 0.141 1.564 r ex1/EX_MEM1/add_result_reg[0]/Q net (fo=2, routed) 0.087 1.651 ex1/EX_MEM1/add_result[0] SLICE_X4Y18 LUT4 (Prop_lut4_I1_O) 0.045 1.696 r ex1/EX_MEM1/NPCout[0]_i_6/O net (fo=1, routed) 0.000 1.696 ex1/EX_MEM1/NPCout[0]_i_6_n_7 SLICE_X4Y18 CARRY4 (Prop_carry4_S[0]_O[0]) 0.070 1.766 r ex1/EX_MEM1/NPCout_reg[0]_i_1/O[0] net (fo=1, routed) 0.000 1.766 if1/IF_PROG/O[0] SLICE_X4Y18 FDRE r if1/IF_PROG/NPCout_reg[0]/D ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.846 1.924 if1/IF_PROG/clk_IBUF_BUFG SLICE_X4Y18 FDRE r if1/IF_PROG/NPCout_reg[0]/C clock pessimism -0.488 1.436 SLICE_X4Y18 FDRE (Hold_fdre_C_D) 0.134 1.570 if1/IF_PROG/NPCout_reg[0] ------------------------------------------------------------------required time -1.570 arrival time 1.766 ------------------------------------------------------------------slack 0.196 Slack (MET) : Source: 0.196ns (arrival time - required time) ex1/EX_MEM1/add_result_reg[4]/C (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: if1/IF_PROG/NPCout_reg[4]/D (rising edge-triggered cell FDRE clocked by sys_clk_pin {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: sys_clk_pin Path Type: Hold (Min at Fast Process Corner) Requirement: 0.000ns (sys_clk_pin rise@0.000ns - sys_clk_pin rise@0.000ns) Data Path Delay: 0.343ns (logic 0.256ns (74.613%) route 0.087ns (25.387%)) Logic Levels: 2 (CARRY4=1 LUT4=1) Clock Path Skew: 0.013ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 1.923ns Source Clock Delay (SCD): 1.422ns Clock Pessimism Removal (CPR): 0.488ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------(clock sys_clk_pin rise edge) 0.000 0.000 r L16 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.259 0.259 r clk_IBUF_inst/O net (fo=1, routed) 0.558 0.817 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.026 0.843 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.579 1.422 ex1/EX_MEM1/clk_IBUF_BUFG SLICE_X5Y19 FDRE r ex1/EX_MEM1/add_result_reg[4]/C ------------------------------------------------------------------- ------------------SLICE_X5Y19 FDRE (Prop_fdre_C_Q) 0.141 1.563 r ex1/EX_MEM1/add_result_reg[4]/Q net (fo=1, routed) 0.087 1.650 ex1/EX_MEM1/add_result[4] SLICE_X4Y19 LUT4 (Prop_lut4_I0_O) 0.045 1.695 r ex1/EX_MEM1/NPCout[4]_i_2/O net (fo=1, routed) 0.000 1.695 ex1/EX_MEM1/NPCout[4]_i_2_n_7 SLICE_X4Y19 CARRY4 (Prop_carry4_S[0]_O[0]) 0.070 1.765 r ex1/EX_MEM1/NPCout_reg[4]_i_1/O[0] net (fo=1, routed) 0.000 1.765 if1/IF_PROG/add_result_reg[4][0] SLICE_X4Y19 FDRE r if1/IF_PROG/NPCout_reg[4]/D ------------------------------------------------------------------- ------------------- L16 (clock sys_clk_pin rise edge) 0.000 0.000 r 0.000 0.000 r clk (IN) net (fo=0) 0.000 0.000 clk L16 IBUF (Prop_ibuf_I_O) 0.447 0.447 r clk_IBUF_inst/O net (fo=1, routed) 0.602 1.049 clk_IBUF BUFGCTRL_X0Y16 BUFG (Prop_bufg_I_O) 0.029 1.078 r clk_IBUF_BUFG_inst/O net (fo=402, routed) 0.845 1.923 if1/IF_PROG/clk_IBUF_BUFG SLICE_X4Y19 FDRE r if1/IF_PROG/NPCout_reg[4]/C clock pessimism -0.488 1.435 SLICE_X4Y19 FDRE (Hold_fdre_C_D) 0.134 1.569 if1/IF_PROG/NPCout_reg[4] ------------------------------------------------------------------required time -1.569 arrival time 1.765 ------------------------------------------------------------------slack 0.196 Pulse Width Checks -------------------------------------------------------------------------------------Clock Name: sys_clk_pin Waveform(ns): { 0.000 4.000 } Period(ns): 8.000 Sources: { clk } Check Type Corner Lib Pin Reference Pin Required(ns) Actual(ns) Slack(ns) Location Pin Min Period n/a RAMB18E1/CLKARDCLK n/a 2.576 8.000 5.424 RAMB18_X0Y8 if1/IF_LATCH/instout_reg/CLKARDCLK Min Period n/a RAMB18E1/CLKBWRCLK n/a 2.576 8.000 5.424 RAMB18_X0Y8 if1/IF_LATCH/instout_reg/CLKBWRCLK Min Period n/a BUFG/I n/a 2.155 8.000 5.845 BUFGCTRL_X0Y16 clk_IBUF_BUFG_inst/I Min Period n/a FDRE/C n/a 1.000 8.000 7.000 SLICE_X5Y19 id1/ID_LATCH/npcout_reg[4]/C Min Period n/a FDRE/C n/a 1.000 8.000 7.000 SLICE_X22Y17 id1/ID_LATCH/readdat1out_reg[0]/C Min Period n/a FDRE/C n/a 1.000 8.000 7.000 SLICE_X38Y19 id1/ID_LATCH/readdat1out_reg[10]/C Min Period n/a FDRE/C n/a 1.000 8.000 7.000 SLICE_X10Y17 id1/ID_LATCH/readdat1out_reg[11]/C Min Period n/a FDRE/C n/a 1.000 8.000 SLICE_X31Y18 id1/ID_LATCH/readdat1out_reg[12]/C Min Period n/a FDRE/C n/a 1.000 8.000 SLICE_X6Y21 id1/ID_LATCH/readdat1out_reg[13]/C Min Period n/a FDRE/C n/a 1.000 8.000 SLICE_X11Y22 id1/ID_LATCH/readdat1out_reg[14]/C Low Pulse Width Slow SRL16E/CLK n/a 0.980 3.020 SLICE_X4Y23 ex1/EX_MEM1/wbout_reg[1]_srl2/CLK Low Pulse Width Fast SRL16E/CLK n/a 0.980 3.020 SLICE_X4Y23 ex1/EX_MEM1/wbout_reg[1]_srl2/CLK Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X5Y19 id1/ID_LATCH/npcout_reg[4]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X23Y23 id1/ID_LATCH/readdat1out_reg[17]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X27Y17 id1/ID_LATCH/readdat1out_reg[18]/C Low Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X7Y18 id1/ID_LATCH/readdat1out_reg[1]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X23Y25 id1/ID_LATCH/readdat1out_reg[20]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X24Y25 id1/ID_LATCH/readdat1out_reg[23]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X38Y25 id1/ID_LATCH/readdat1out_reg[25]/C Low Pulse Width Fast FDRE/C n/a 0.500 4.000 SLICE_X23Y25 id1/ID_LATCH/readdat1out_reg[26]/C High Pulse Width Slow SRL16E/CLK n/a 0.980 3.020 SLICE_X4Y23 ex1/EX_MEM1/wbout_reg[1]_srl2/CLK High Pulse Width Fast SRL16E/CLK n/a 0.980 3.020 SLICE_X4Y23 ex1/EX_MEM1/wbout_reg[1]_srl2/CLK High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X38Y19 id1/ID_LATCH/readdat1out_reg[10]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X10Y17 id1/ID_LATCH/readdat1out_reg[11]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X31Y18 id1/ID_LATCH/readdat1out_reg[12]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X6Y24 id1/ID_LATCH/readdat1out_reg[16]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X30Y20 id1/ID_LATCH/readdat1out_reg[19]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X38Y19 id1/ID_LATCH/readdat1out_reg[31]/C High Pulse Width Slow FDRE/C n/a 0.500 4.000 SLICE_X10Y17 id1/ID_LATCH/readdat1out_reg[7]/C 7.000 7.000 7.000 4.000 4.000 3.500 3.500 3.500 3.500 3.500 3.500 3.500 3.500 4.000 4.000 3.500 3.500 3.500 3.500 3.500 3.500 3.500 High Pulse Width Slow SLICE_X38Y19 FDRE/C n/a 0.500 id1/ID_LATCH/readdat2out_reg[10]/C General Timing Summary Bitstream and the Board Bitstream attached separately (inside zipped project file). 4.000 3.500 Conclusion After many weeks, we have finally completed a fully functional MIPS pipeline. The code from the previous labs largely remained the same, with some rewiring to fix both issues we hadn’t noticed previously, as well as new ones the cropped up in the process of connecting everything together. The old errors consisted primarily of just typos, while the new errors came from connecting our new modules back to the old ones, replacing previously static values with new variables. Speaking of new modules: both the memory and writeback stages were created from scratch for this project. They were fairly simple to create, with basic components and a similar register to the previous stages. These were then combined I fairly straight forward testbench where we connected each module just as we learned in lecture. All of this code is included above. This is where the constraint file came in. We had to implement all of this code onto the circuit board we were provided, and the only way to show it was implemented correctly is to properly link it with the constraint file. This wasn’t an overly complicated process, as we just followed the tutorial provided. We set our clock established in the testbench to the board clock, and then an arbitrary switch as our input with an LED as our output. This brought our code to life and gave it a practical application beyond just learning the process of creation and practicing our coding skills. A photo proving the effectiveness of this implementation is shown directly above the conclusion. Everything synthesized and implemented without error, creating all of the images and reports already detailed. Of note is the Timing report, which we haven’t discussed in previous labs. Due to the extreme length of the report, I included a brief summary at the end to capture the highlights of the report for those who want an idea of the timing at a brief length. The short of it is everything worked as intended. Overall, our design seems to be a success on all fronts and our understanding of the material seems to have improved tremendously as a result of working on this project.