From 010aed9ccbb89b85409be3ed26aa20cfeb99a08c Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Fri, 20 Oct 2017 17:38:33 -0400 Subject: [PATCH 01/39] create workplan --- Maggie and Logan Work Plan | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Maggie and Logan Work Plan diff --git a/Maggie and Logan Work Plan b/Maggie and Logan Work Plan new file mode 100644 index 0000000..061d559 --- /dev/null +++ b/Maggie and Logan Work Plan @@ -0,0 +1,21 @@ +CompArch Lab 2 Work Plan +Logan and Maggie +10/20/17 + +Understand what SPI memory is. Time: 1 hours. Due:10/22 +Create input conditioner. Time: 1 hour. Due: End of day, 10/22 +Write test bench for input conditioner. Time: 1 hour. Due: End of day, 10/23 +Create shift register. Time: 3 hours. Due: 9 pm, 10/24 +Write test bench for input conditioner. Time: 2 hours. Due: 10 pm, 10/24 +Load input conditioner & shift register onto FPGA. Time: 2 hours. Due: End of day, October 24 +Write complete test bench for what we have so far Time: 1 hours Due: End of day, October 25 +Midpoint Deliverable writeup Time: 2 hours Due: End of day October 25 +Read about FSM & Maggie double checks her understanding of things. Time: 1 hour. Due: 10/24 +Create drawing of FSM Time: 0.5 hours Due: End of day October 24 +Check FSM with an instructor Time: 0.5 hours Due: End of day October 24 +Code FSM Time: 2 hours Due: End of day October 25 +Finish SPI module Time: 5 hours Due: End of day October 28 +Write and evaluate testbench Time: 3 hours Due: End of day October 30 +Write report Time: 2 hours Due: End of day November 1 + +Total time: 27 hours From b2bdf828a599b6fcdaffa9ddf545f5b258547aa3 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Fri, 20 Oct 2017 19:00:57 -0400 Subject: [PATCH 02/39] inputconditioner done maybe --- inputconditioner.v | 37 +++++++++++----- test1 | 106 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 12 deletions(-) create mode 100755 test1 diff --git a/inputconditioner.v b/inputconditioner.v index 736a866..3db2bdf 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -4,6 +4,7 @@ // 2) Debounces input // 3) Creates pulses at edge transitions //------------------------------------------------------------------------ +// 50 MHz is 2 * 1-^-8 seconds per cycle module inputconditioner ( @@ -14,25 +15,37 @@ output reg positiveedge, // 1 clk pulse at rising edge of conditioned output reg negativeedge // 1 clk pulse at falling edge of conditioned ); - parameter counterwidth = 3; // Counter size, in bits, >= log2(waittime) + parameter counterwidth = 3; // Counter size, in bits, >= log2(waittime) (maybe this could be 2 since 2^2 > 3) parameter waittime = 3; // Debounce delay, in clock cycles reg[counterwidth-1:0] counter = 0; reg synchronizer0 = 0; reg synchronizer1 = 0; - always @(posedge clk ) begin - if(conditioned == synchronizer1) +always @(posedge clk ) begin + if(conditioned == synchronizer1) + counter <= 0; + else begin + if( counter == waittime) begin counter <= 0; - else begin - if( counter == waittime) begin - counter <= 0; - conditioned <= synchronizer1; - end - else - counter <= counter+1; + conditioned <= synchronizer1; + if(conditioned == 0 & synchronizer1 ==1) begin + positiveedge <= 1; + end + if(conditioned == 1 & synchronizer1 ==0) begin + negativeedge <= 1; + end end - synchronizer0 <= noisysignal; - synchronizer1 <= synchronizer0; + else + counter <= counter+1; end + + synchronizer0 <= noisysignal; // these happen every time there's a + clk edge + synchronizer1 <= synchronizer0; + positiveedge <= 0; + negativeedge <= 0; +end + endmodule + + diff --git a/test1 b/test1 new file mode 100755 index 0000000..56369d5 --- /dev/null +++ b/test1 @@ -0,0 +1,106 @@ +#! /usr/bin/vvp +:ivl_version "0.9.7 " "(v0_9_7)"; +:vpi_time_precision + 0; +:vpi_module "system"; +:vpi_module "v2005_math"; +:vpi_module "va_math"; +S_0x1739730 .scope module, "inputconditioner" "inputconditioner" 2 9; + .timescale 0 0; +P_0x1739828 .param/l "counterwidth" 2 18, +C4<011>; +P_0x1739850 .param/l "waittime" 2 19, +C4<011>; +v0x173a3c0_0 .net "clk", 0 0, C4; 0 drivers +v0x177f070_0 .var "conditioned", 0 0; +v0x177f110_0 .var "counter", 2 0; +v0x177f1b0_0 .var "negativeedge", 0 0; +v0x177f260_0 .net "noisysignal", 0 0, C4; 0 drivers +v0x177f300_0 .var "positiveedge", 0 0; +v0x177f3e0_0 .var "synchronizer0", 0 0; +v0x177f480_0 .var "synchronizer1", 0 0; +E_0x17711c0 .event posedge, v0x173a3c0_0; + .scope S_0x1739730; +T_0 ; + %set/v v0x177f110_0, 0, 3; + %end; + .thread T_0; + .scope S_0x1739730; +T_1 ; + %set/v v0x177f3e0_0, 0, 1; + %end; + .thread T_1; + .scope S_0x1739730; +T_2 ; + %set/v v0x177f480_0, 0, 1; + %end; + .thread T_2; + .scope S_0x1739730; +T_3 ; + %wait E_0x17711c0; + %load/v 8, v0x177f070_0, 1; + %load/v 9, v0x177f480_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_3.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x177f110_0, 0, 0; + %jmp T_3.1; +T_3.0 ; + %load/v 8, v0x177f110_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_3.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x177f110_0, 0, 0; + %load/v 8, v0x177f480_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x177f070_0, 0, 8; + %load/v 8, v0x177f070_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x177f480_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x177f300_0, 0, 1; +T_3.4 ; + %load/v 8, v0x177f070_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x177f480_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x177f1b0_0, 0, 1; +T_3.6 ; + %jmp T_3.3; +T_3.2 ; + %load/v 8, v0x177f110_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x177f110_0, 0, 8; +T_3.3 ; +T_3.1 ; + %load/v 8, v0x177f260_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x177f3e0_0, 0, 8; + %load/v 8, v0x177f3e0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x177f480_0, 0, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x177f300_0, 0, 0; + %ix/load 0, 1, 0; + %assign/v0 v0x177f1b0_0, 0, 0; + %jmp T_3; + .thread T_3; +# The file index is used to find the file name in the following table. +:file_names 3; + "N/A"; + ""; + "inputconditioner.v"; From 3a596b46ab531c598f2dd0e7d9f5dd551f32192c Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Sun, 22 Oct 2017 14:46:31 -0400 Subject: [PATCH 03/39] inputconditioner --- inputconditioner.v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inputconditioner.v b/inputconditioner.v index 3db2bdf..34b87a3 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -20,13 +20,13 @@ output reg negativeedge // 1 clk pulse at falling edge of conditioned reg[counterwidth-1:0] counter = 0; reg synchronizer0 = 0; - reg synchronizer1 = 0; + reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge always @(posedge clk ) begin if(conditioned == synchronizer1) counter <= 0; else begin - if( counter == waittime) begin + if( counter == waittime) begin counter <= 0; conditioned <= synchronizer1; if(conditioned == 0 & synchronizer1 ==1) begin From 06ed41e9a457c0e8c8d818d0c7363dc7115885a1 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Sun, 22 Oct 2017 15:43:31 -0400 Subject: [PATCH 04/39] falling and rising edge done --- inputconditioner.t.v | 38 +++- inputconditioner.v | 15 +- inputconditioner.vcd | 465 +++++++++++++++++++++++++++++++++++++++++++ test | 172 ++++++++++++++++ 4 files changed, 678 insertions(+), 12 deletions(-) create mode 100644 inputconditioner.vcd create mode 100755 test diff --git a/inputconditioner.t.v b/inputconditioner.t.v index 2814163..66d03d9 100644 --- a/inputconditioner.t.v +++ b/inputconditioner.t.v @@ -1,9 +1,11 @@ //------------------------------------------------------------------------ // Input Conditioner test bench //------------------------------------------------------------------------ +`include "inputconditioner.v" module testConditioner(); + reg clk; reg pin; wire conditioned; @@ -14,16 +16,34 @@ module testConditioner(); .noisysignal(pin), .conditioned(conditioned), .positiveedge(rising), - .negativeedge(falling)) - + .negativeedge(falling)); - // Generate clock (50MHz) initial clk=0; - always #10 clk=!clk; // 50MHz Clock - + always #10 clk=!clk; // 50MHz Clock initial begin - // Your Test Code - // Be sure to test each of the three conditioner functions: - // Synchronization, Debouncing, Edge Detection - + +$dumpfile("inputconditioner.vcd"); +$dumpvars(); + +$display(" clk | pin | conditioned | -edge| + edge"); +pin = 0; #400 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #2 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #300 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #3 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #200 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); + +$finish; +end + endmodule diff --git a/inputconditioner.v b/inputconditioner.v index 34b87a3..280ff98 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -21,8 +21,9 @@ output reg negativeedge // 1 clk pulse at falling edge of conditioned reg[counterwidth-1:0] counter = 0; reg synchronizer0 = 0; reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge - + always @(posedge clk ) begin +//$display ("began"); if(conditioned == synchronizer1) counter <= 0; else begin @@ -31,19 +32,27 @@ always @(posedge clk ) begin conditioned <= synchronizer1; if(conditioned == 0 & synchronizer1 ==1) begin positiveedge <= 1; + $display("positive edge gotten"); end if(conditioned == 1 & synchronizer1 ==0) begin negativeedge <= 1; + $display("negative edge gotten"); end end else counter <= counter+1; + $display("counter iterated"); end + + if(positiveedge == 1) + positiveedge <= 0; + if(negativeedge == 1) + negativeedge <= 0; synchronizer0 <= noisysignal; // these happen every time there's a + clk edge synchronizer1 <= synchronizer0; - positiveedge <= 0; - negativeedge <= 0; + //positiveedge <= 0; + //negativeedge <= 0; end endmodule diff --git a/inputconditioner.vcd b/inputconditioner.vcd new file mode 100644 index 0000000..5c7309b --- /dev/null +++ b/inputconditioner.vcd @@ -0,0 +1,465 @@ +$date + Sun Oct 22 15:36:43 2017 +$end +$version + Icarus Verilog +$end +$timescale + 1s +$end +$scope module testConditioner $end +$var wire 1 ! conditioned $end +$var wire 1 " falling $end +$var wire 1 # rising $end +$var reg 1 $ clk $end +$var reg 1 % pin $end +$scope module dut $end +$var wire 1 & clk $end +$var wire 1 ' noisysignal $end +$var reg 1 ( conditioned $end +$var reg 3 ) counter [2:0] $end +$var reg 1 * negativeedge $end +$var reg 1 + positiveedge $end +$var reg 1 , synchronizer0 $end +$var reg 1 - synchronizer1 $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +0- +0, +x+ +x* +b0 ) +x( +0' +0& +0% +0$ +x# +x" +x! +$end +#10 +b1 ) +1$ +1& +#20 +0$ +0& +#30 +b10 ) +1$ +1& +#40 +0$ +0& +#50 +b11 ) +1$ +1& +#60 +0$ +0& +#70 +0( +0! +b0 ) +1$ +1& +#80 +0$ +0& +#90 +1$ +1& +#100 +0$ +0& +#110 +1$ +1& +#120 +0$ +0& +#130 +1$ +1& +#140 +0$ +0& +#150 +1$ +1& +#160 +0$ +0& +#170 +1$ +1& +#180 +0$ +0& +#190 +1$ +1& +#200 +0$ +0& +#210 +1$ +1& +#220 +0$ +0& +#230 +1$ +1& +#240 +0$ +0& +#250 +1$ +1& +#260 +0$ +0& +#270 +1$ +1& +#280 +0$ +0& +#290 +1$ +1& +#300 +0$ +0& +#310 +1$ +1& +#320 +0$ +0& +#330 +1$ +1& +#340 +0$ +0& +#350 +1$ +1& +#360 +0$ +0& +#370 +1$ +1& +#380 +0$ +0& +#390 +1$ +1& +#400 +0$ +0& +1% +1' +#410 +1, +1$ +1& +#420 +0$ +0& +#430 +1- +1$ +1& +#440 +0$ +0& +#450 +b1 ) +1$ +1& +#460 +0$ +0& +#470 +b10 ) +1$ +1& +#480 +0$ +0& +#490 +b11 ) +1$ +1& +#500 +0$ +0& +0% +0' +#502 +1% +1' +#510 +1+ +1# +1( +1! +b0 ) +1$ +1& +#520 +0$ +0& +#530 +0+ +0# +1$ +1& +#540 +0$ +0& +#550 +1$ +1& +#560 +0$ +0& +#570 +1$ +1& +#580 +0$ +0& +#590 +1$ +1& +#600 +0$ +0& +#602 +0% +0' +#610 +0, +1$ +1& +#620 +0$ +0& +#630 +0- +1$ +1& +#640 +0$ +0& +#650 +b1 ) +1$ +1& +#660 +0$ +0& +#670 +b10 ) +1$ +1& +#680 +0$ +0& +#690 +b11 ) +1$ +1& +#700 +0$ +0& +#710 +1* +1" +0( +0! +b0 ) +1$ +1& +#720 +0$ +0& +#730 +0* +0" +1$ +1& +#740 +0$ +0& +#750 +1$ +1& +#760 +0$ +0& +#770 +1$ +1& +#780 +0$ +0& +#790 +1$ +1& +#800 +0$ +0& +#810 +1$ +1& +#820 +0$ +0& +#830 +1$ +1& +#840 +0$ +0& +#850 +1$ +1& +#860 +0$ +0& +#870 +1$ +1& +#880 +0$ +0& +#890 +1$ +1& +#900 +0$ +0& +#902 +1% +1' +#905 +0% +0' +#910 +1$ +1& +#920 +0$ +0& +#930 +1$ +1& +#940 +0$ +0& +#950 +1$ +1& +#960 +0$ +0& +#970 +1$ +1& +#980 +0$ +0& +#990 +1$ +1& +#1000 +0$ +0& +#1005 +1% +1' +#1010 +1, +1$ +1& +#1020 +0$ +0& +#1030 +1- +1$ +1& +#1040 +0$ +0& +#1050 +b1 ) +1$ +1& +#1060 +0$ +0& +#1070 +b10 ) +1$ +1& +#1080 +0$ +0& +#1090 +b11 ) +1$ +1& +#1100 +0$ +0& +#1110 +1+ +1# +1( +1! +b0 ) +1$ +1& +#1120 +0$ +0& +#1130 +0+ +0# +1$ +1& +#1140 +0$ +0& +#1150 +1$ +1& +#1160 +0$ +0& +#1170 +1$ +1& +#1180 +0$ +0& +#1190 +1$ +1& +#1200 +0$ +0& +#1205 diff --git a/test b/test new file mode 100755 index 0000000..942815b --- /dev/null +++ b/test @@ -0,0 +1,172 @@ +#! /usr/bin/vvp +:ivl_version "0.9.7 " "(v0_9_7)"; +:vpi_time_precision + 0; +:vpi_module "system"; +:vpi_module "v2005_math"; +:vpi_module "va_math"; +S_0x1c1b730 .scope module, "testConditioner" "testConditioner" 2 6; + .timescale 0 0; +v0x1c6b7b0_0 .var "clk", 0 0; +v0x1c6b850_0 .net "conditioned", 0 0, v0x1c6b2b0_0; 1 drivers +v0x1c6b900_0 .net "falling", 0 0, v0x1c6b3f0_0; 1 drivers +v0x1c6b9b0_0 .var "pin", 0 0; +v0x1c6ba90_0 .net "rising", 0 0, v0x1c6b540_0; 1 drivers +S_0x1c1b820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1c1b730; + .timescale 0 0; +P_0x1c1c3c8 .param/l "counterwidth" 3 18, +C4<011>; +P_0x1c1c3f0 .param/l "waittime" 3 19, +C4<011>; +v0x1c1c2c0_0 .net "clk", 0 0, v0x1c6b7b0_0; 1 drivers +v0x1c6b2b0_0 .var "conditioned", 0 0; +v0x1c6b350_0 .var "counter", 2 0; +v0x1c6b3f0_0 .var "negativeedge", 0 0; +v0x1c6b4a0_0 .net "noisysignal", 0 0, v0x1c6b9b0_0; 1 drivers +v0x1c6b540_0 .var "positiveedge", 0 0; +v0x1c6b620_0 .var "synchronizer0", 0 0; +v0x1c6b6c0_0 .var "synchronizer1", 0 0; +E_0x1c57a70 .event posedge, v0x1c1c2c0_0; + .scope S_0x1c1b820; +T_0 ; + %set/v v0x1c6b350_0, 0, 3; + %end; + .thread T_0; + .scope S_0x1c1b820; +T_1 ; + %set/v v0x1c6b620_0, 0, 1; + %end; + .thread T_1; + .scope S_0x1c1b820; +T_2 ; + %set/v v0x1c6b6c0_0, 0, 1; + %end; + .thread T_2; + .scope S_0x1c1b820; +T_3 ; + %wait E_0x1c57a70; + %load/v 8, v0x1c6b2b0_0, 1; + %load/v 9, v0x1c6b6c0_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_3.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1c6b350_0, 0, 0; + %jmp T_3.1; +T_3.0 ; + %load/v 8, v0x1c6b350_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_3.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1c6b350_0, 0, 0; + %load/v 8, v0x1c6b6c0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b2b0_0, 0, 8; + %load/v 8, v0x1c6b2b0_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x1c6b6c0_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b540_0, 0, 1; + %vpi_call 3 35 "$display", "positive edge gotten"; +T_3.4 ; + %load/v 8, v0x1c6b2b0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x1c6b6c0_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b3f0_0, 0, 1; + %vpi_call 3 39 "$display", "negative edge gotten"; +T_3.6 ; + %jmp T_3.3; +T_3.2 ; + %load/v 8, v0x1c6b350_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x1c6b350_0, 0, 8; +T_3.3 ; + %vpi_call 3 44 "$display", "counter iterated"; +T_3.1 ; + %load/v 8, v0x1c6b540_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_3.8, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b540_0, 0, 0; +T_3.8 ; + %load/v 8, v0x1c6b3f0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_3.10, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b3f0_0, 0, 0; +T_3.10 ; + %load/v 8, v0x1c6b4a0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b620_0, 0, 8; + %load/v 8, v0x1c6b620_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1c6b6c0_0, 0, 8; + %jmp T_3; + .thread T_3; + .scope S_0x1c1b730; +T_4 ; + %set/v v0x1c6b7b0_0, 0, 1; + %end; + .thread T_4; + .scope S_0x1c1b730; +T_5 ; + %delay 10, 0; + %load/v 8, v0x1c6b7b0_0, 1; + %inv 8, 1; + %set/v v0x1c6b7b0_0, 8, 1; + %jmp T_5; + .thread T_5; + .scope S_0x1c1b730; +T_6 ; + %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; + %vpi_call 2 26 "$dumpvars"; + %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 400, 0; + %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 100, 0; + %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 2, 0; + %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 100, 0; + %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 300, 0; + %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 3, 0; + %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 100, 0; + %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 200, 0; + %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %vpi_call 2 46 "$finish"; + %end; + .thread T_6; +# The file index is used to find the file name in the following table. +:file_names 4; + "N/A"; + ""; + "inputconditioner.t.v"; + "./inputconditioner.v"; From 88bd116612d6d3c1e56331e8b0d3dd6be620d8dc Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Sun, 22 Oct 2017 20:49:22 -0400 Subject: [PATCH 05/39] shift register comments and structure added --- shiftregister.t.v | 8 +++++++- shiftregister.v | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/shiftregister.t.v b/shiftregister.t.v index abe5b48..aa531d9 100644 --- a/shiftregister.t.v +++ b/shiftregister.t.v @@ -2,6 +2,8 @@ // Shift Register test bench //------------------------------------------------------------------------ +`include "shiftregister.v" + module testshiftregister(); reg clk; @@ -11,7 +13,7 @@ module testshiftregister(); wire serialDataOut; reg[7:0] parallelDataIn; reg serialDataIn; - + // Instantiate with parameter width = 8 shiftregister #(8) dut(.clk(clk), .peripheralClkEdge(peripheralClkEdge), @@ -20,6 +22,10 @@ module testshiftregister(); .serialDataIn(serialDataIn), .parallelDataOut(parallelDataOut), .serialDataOut(serialDataOut)); + + + initial clk=0; + always #10 clk=!clk; // 50MHz Clock initial begin // Your Test Code diff --git a/shiftregister.v b/shiftregister.v index b4ec057..c9af668 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -18,8 +18,40 @@ output [width-1:0] parallelDataOut, // Shift reg data contents output serialDataOut // Positive edge synchronized ); - reg [width-1:0] shiftregistermem; +reg [width-1:0] shiftregistermem; + +// general thoughts: make a loop that happens width # of times, +// and then use the idea behind the behavioral flip flop below +// so that you can pass things along as needed. + +// from the assignment: +// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. +// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " + +always @(posedge clk) begin + // Your Code Here +end + +always @(posedge periperalClkEdge) + +end + + + +endmodule + + + +module flipflop +( +output reg q, +input d, +input wrenable, +input clk +); always @(posedge clk) begin - // Your Code Here + if(wrenable) begin + q = d; + end end endmodule From 9e0498ad47237058096861dc8a50662047296007 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Mon, 23 Oct 2017 10:07:37 -0400 Subject: [PATCH 06/39] checking GTKwave and relized conditioned signal is broken --- inputconditioner.t.v | 66 ++++++++++---- inputconditioner.vcd | 209 ++++++++++++++++--------------------------- shiftregister.v | 7 +- test | 155 ++++++++++++++++---------------- 4 files changed, 209 insertions(+), 228 deletions(-) diff --git a/inputconditioner.t.v b/inputconditioner.t.v index 66d03d9..93f54d8 100644 --- a/inputconditioner.t.v +++ b/inputconditioner.t.v @@ -25,23 +25,57 @@ module testConditioner(); $dumpfile("inputconditioner.vcd"); $dumpvars(); -$display(" clk | pin | conditioned | -edge| + edge"); -pin = 0; #400 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #100 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #2 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #100 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #300 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #3 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// $display(" clk | pin | conditioned | -edge| + edge"); +// pin = 0; #50 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #80 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #2 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #70 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #90 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #8 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #70 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #150 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #50 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #15 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #1 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 1; #70 +// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +// pin = 0; #50 + +// something shiesty is going on with the passing from synchronizer 1 to the conditioned signal. +// I'll try to take a look at it again before we meet. +// See GTK wave simulation with these paramters to observe jankness with your own eyes. + +pin = 0; #50 +pin = 1; #160 +pin = 0; #70 +pin = 1; #10 +pin = 0; #80 + +pin = 1; #60 +pin = 0; #100 +pin = 1; #65 pin = 0; #100 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #200 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #70 + +pin = 0; #150 +// pin = 1; #50 +// pin = 0; #15 +// pin = 1; #1 +// pin = 0; #70 +// pin = 1; #50 + + $finish; end diff --git a/inputconditioner.vcd b/inputconditioner.vcd index 5c7309b..8fa5bcc 100644 --- a/inputconditioner.vcd +++ b/inputconditioner.vcd @@ -1,5 +1,5 @@ $date - Sun Oct 22 15:36:43 2017 + Mon Oct 23 10:04:33 2017 $end $version Icarus Verilog @@ -56,13 +56,17 @@ b10 ) 0$ 0& #50 +1, b11 ) 1$ 1& +1% +1' #60 0$ 0& #70 +1- 0( 0! b0 ) @@ -72,30 +76,40 @@ b0 ) 0$ 0& #90 +b1 ) 1$ 1& #100 0$ 0& #110 +b10 ) 1$ 1& #120 0$ 0& #130 +b11 ) 1$ 1& #140 0$ 0& #150 +1+ +1# +1( +1! +b0 ) 1$ 1& #160 0$ 0& #170 +0+ +0# 1$ 1& #180 @@ -108,42 +122,60 @@ b0 ) 0$ 0& #210 +0, 1$ 1& +0% +0' #220 0$ 0& #230 +0- 1$ 1& #240 0$ 0& #250 +b1 ) 1$ 1& #260 0$ 0& #270 +b10 ) 1$ 1& #280 0$ 0& +1% +1' #290 +b11 ) 1$ 1& +0% +0' #300 0$ 0& #310 +1* +1" +0( +0! +b0 ) 1$ 1& #320 0$ 0& #330 +0* +0" 1$ 1& #340 @@ -156,101 +188,101 @@ b0 ) 0$ 0& #370 +1, 1$ 1& +1% +1' #380 0$ 0& #390 +1- 1$ 1& #400 0$ 0& -1% -1' #410 -1, +b1 ) 1$ 1& #420 0$ 0& #430 -1- +0, +b10 ) 1$ 1& +0% +0' #440 0$ 0& #450 -b1 ) +0- +b11 ) 1$ 1& #460 0$ 0& #470 -b10 ) +b0 ) 1$ 1& #480 0$ 0& #490 -b11 ) 1$ 1& #500 0$ 0& -0% -0' -#502 -1% -1' #510 -1+ -1# -1( -1! -b0 ) 1$ 1& #520 0$ 0& #530 -0+ -0# +1, 1$ 1& +1% +1' #540 0$ 0& #550 +1- 1$ 1& #560 0$ 0& #570 +b1 ) 1$ 1& #580 0$ 0& #590 +b10 ) 1$ 1& +#595 +0% +0' #600 0$ 0& -#602 -0% -0' #610 0, +b11 ) 1$ 1& #620 @@ -258,12 +290,19 @@ b0 ) 0& #630 0- +1+ +1# +1( +1! +b0 ) 1$ 1& #640 0$ 0& #650 +0+ +0# b1 ) 1$ 1& @@ -281,10 +320,14 @@ b10 ) b11 ) 1$ 1& +#695 +1% +1' #700 0$ 0& #710 +1, 1* 1" 0( @@ -296,6 +339,7 @@ b0 ) 0$ 0& #730 +1- 0* 0" 1$ @@ -304,24 +348,33 @@ b0 ) 0$ 0& #750 +b1 ) 1$ 1& #760 0$ 0& +#765 +0% +0' #770 +0, +b10 ) 1$ 1& #780 0$ 0& #790 +0- +b11 ) 1$ 1& #800 0$ 0& #810 +b0 ) 1$ 1& #820 @@ -351,115 +404,7 @@ b0 ) #900 0$ 0& -#902 -1% -1' -#905 -0% -0' #910 1$ 1& -#920 -0$ -0& -#930 -1$ -1& -#940 -0$ -0& -#950 -1$ -1& -#960 -0$ -0& -#970 -1$ -1& -#980 -0$ -0& -#990 -1$ -1& -#1000 -0$ -0& -#1005 -1% -1' -#1010 -1, -1$ -1& -#1020 -0$ -0& -#1030 -1- -1$ -1& -#1040 -0$ -0& -#1050 -b1 ) -1$ -1& -#1060 -0$ -0& -#1070 -b10 ) -1$ -1& -#1080 -0$ -0& -#1090 -b11 ) -1$ -1& -#1100 -0$ -0& -#1110 -1+ -1# -1( -1! -b0 ) -1$ -1& -#1120 -0$ -0& -#1130 -0+ -0# -1$ -1& -#1140 -0$ -0& -#1150 -1$ -1& -#1160 -0$ -0& -#1170 -1$ -1& -#1180 -0$ -0& -#1190 -1$ -1& -#1200 -0$ -0& -#1205 +#915 diff --git a/shiftregister.v b/shiftregister.v index c9af668..207273f 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -24,12 +24,17 @@ reg [width-1:0] shiftregistermem; // and then use the idea behind the behavioral flip flop below // so that you can pass things along as needed. +// confusion points: I don't know what the peripheral clock edge does. +// The assignement says that the bits advance when the periperal clock +// has an edge, but I don't know why you don't use the normal clock? + // from the assignment: // " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. // You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " always @(posedge clk) begin - // Your Code Here + peripheralCLkEdge <= clk; + end always @(posedge periperalClkEdge) diff --git a/test b/test index 942815b..142099c 100755 --- a/test +++ b/test @@ -4,164 +4,161 @@ :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; -S_0x1c1b730 .scope module, "testConditioner" "testConditioner" 2 6; +S_0x1241730 .scope module, "testConditioner" "testConditioner" 2 6; .timescale 0 0; -v0x1c6b7b0_0 .var "clk", 0 0; -v0x1c6b850_0 .net "conditioned", 0 0, v0x1c6b2b0_0; 1 drivers -v0x1c6b900_0 .net "falling", 0 0, v0x1c6b3f0_0; 1 drivers -v0x1c6b9b0_0 .var "pin", 0 0; -v0x1c6ba90_0 .net "rising", 0 0, v0x1c6b540_0; 1 drivers -S_0x1c1b820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1c1b730; +v0x128db00_0 .var "clk", 0 0; +v0x128dba0_0 .net "conditioned", 0 0, v0x128d600_0; 1 drivers +v0x128dc50_0 .net "falling", 0 0, v0x128d740_0; 1 drivers +v0x128dd00_0 .var "pin", 0 0; +v0x128dde0_0 .net "rising", 0 0, v0x128d890_0; 1 drivers +S_0x1241820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1241730; .timescale 0 0; -P_0x1c1c3c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x1c1c3f0 .param/l "waittime" 3 19, +C4<011>; -v0x1c1c2c0_0 .net "clk", 0 0, v0x1c6b7b0_0; 1 drivers -v0x1c6b2b0_0 .var "conditioned", 0 0; -v0x1c6b350_0 .var "counter", 2 0; -v0x1c6b3f0_0 .var "negativeedge", 0 0; -v0x1c6b4a0_0 .net "noisysignal", 0 0, v0x1c6b9b0_0; 1 drivers -v0x1c6b540_0 .var "positiveedge", 0 0; -v0x1c6b620_0 .var "synchronizer0", 0 0; -v0x1c6b6c0_0 .var "synchronizer1", 0 0; -E_0x1c57a70 .event posedge, v0x1c1c2c0_0; - .scope S_0x1c1b820; +P_0x12423c8 .param/l "counterwidth" 3 18, +C4<011>; +P_0x12423f0 .param/l "waittime" 3 19, +C4<011>; +v0x12422c0_0 .net "clk", 0 0, v0x128db00_0; 1 drivers +v0x128d600_0 .var "conditioned", 0 0; +v0x128d6a0_0 .var "counter", 2 0; +v0x128d740_0 .var "negativeedge", 0 0; +v0x128d7f0_0 .net "noisysignal", 0 0, v0x128dd00_0; 1 drivers +v0x128d890_0 .var "positiveedge", 0 0; +v0x128d970_0 .var "synchronizer0", 0 0; +v0x128da10_0 .var "synchronizer1", 0 0; +E_0x1255c30 .event posedge, v0x12422c0_0; + .scope S_0x1241820; T_0 ; - %set/v v0x1c6b350_0, 0, 3; + %set/v v0x128d6a0_0, 0, 3; %end; .thread T_0; - .scope S_0x1c1b820; + .scope S_0x1241820; T_1 ; - %set/v v0x1c6b620_0, 0, 1; + %set/v v0x128d970_0, 0, 1; %end; .thread T_1; - .scope S_0x1c1b820; + .scope S_0x1241820; T_2 ; - %set/v v0x1c6b6c0_0, 0, 1; + %set/v v0x128da10_0, 0, 1; %end; .thread T_2; - .scope S_0x1c1b820; + .scope S_0x1241820; T_3 ; - %wait E_0x1c57a70; - %load/v 8, v0x1c6b2b0_0, 1; - %load/v 9, v0x1c6b6c0_0, 1; + %wait E_0x1255c30; + %load/v 8, v0x128d600_0, 1; + %load/v 9, v0x128da10_0, 1; %cmp/u 8, 9, 1; %jmp/0xz T_3.0, 4; %ix/load 0, 3, 0; - %assign/v0 v0x1c6b350_0, 0, 0; + %assign/v0 v0x128d6a0_0, 0, 0; %jmp T_3.1; T_3.0 ; - %load/v 8, v0x1c6b350_0, 3; + %load/v 8, v0x128d6a0_0, 3; %mov 11, 0, 1; %cmpi/u 8, 3, 4; %jmp/0xz T_3.2, 4; %ix/load 0, 3, 0; - %assign/v0 v0x1c6b350_0, 0, 0; - %load/v 8, v0x1c6b6c0_0, 1; + %assign/v0 v0x128d6a0_0, 0, 0; + %load/v 8, v0x128da10_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b2b0_0, 0, 8; - %load/v 8, v0x1c6b2b0_0, 1; + %assign/v0 v0x128d600_0, 0, 8; + %load/v 8, v0x128d600_0, 1; %mov 9, 0, 1; %cmpi/u 8, 0, 2; %mov 8, 4, 1; - %load/v 9, v0x1c6b6c0_0, 1; + %load/v 9, v0x128da10_0, 1; %mov 10, 0, 2; %cmpi/u 9, 1, 3; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.4, 8; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b540_0, 0, 1; + %assign/v0 v0x128d890_0, 0, 1; %vpi_call 3 35 "$display", "positive edge gotten"; T_3.4 ; - %load/v 8, v0x1c6b2b0_0, 1; + %load/v 8, v0x128d600_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %mov 8, 4, 1; - %load/v 9, v0x1c6b6c0_0, 1; + %load/v 9, v0x128da10_0, 1; %mov 10, 0, 1; %cmpi/u 9, 0, 2; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.6, 8; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b3f0_0, 0, 1; + %assign/v0 v0x128d740_0, 0, 1; %vpi_call 3 39 "$display", "negative edge gotten"; T_3.6 ; %jmp T_3.3; T_3.2 ; - %load/v 8, v0x1c6b350_0, 3; + %load/v 8, v0x128d6a0_0, 3; %mov 11, 0, 29; %addi 8, 1, 32; %ix/load 0, 3, 0; - %assign/v0 v0x1c6b350_0, 0, 8; + %assign/v0 v0x128d6a0_0, 0, 8; T_3.3 ; %vpi_call 3 44 "$display", "counter iterated"; T_3.1 ; - %load/v 8, v0x1c6b540_0, 1; + %load/v 8, v0x128d890_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.8, 4; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b540_0, 0, 0; + %assign/v0 v0x128d890_0, 0, 0; T_3.8 ; - %load/v 8, v0x1c6b3f0_0, 1; + %load/v 8, v0x128d740_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.10, 4; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b3f0_0, 0, 0; + %assign/v0 v0x128d740_0, 0, 0; T_3.10 ; - %load/v 8, v0x1c6b4a0_0, 1; + %load/v 8, v0x128d7f0_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b620_0, 0, 8; - %load/v 8, v0x1c6b620_0, 1; + %assign/v0 v0x128d970_0, 0, 8; + %load/v 8, v0x128d970_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x1c6b6c0_0, 0, 8; + %assign/v0 v0x128da10_0, 0, 8; %jmp T_3; .thread T_3; - .scope S_0x1c1b730; + .scope S_0x1241730; T_4 ; - %set/v v0x1c6b7b0_0, 0, 1; + %set/v v0x128db00_0, 0, 1; %end; .thread T_4; - .scope S_0x1c1b730; + .scope S_0x1241730; T_5 ; %delay 10, 0; - %load/v 8, v0x1c6b7b0_0, 1; + %load/v 8, v0x128db00_0, 1; %inv 8, 1; - %set/v v0x1c6b7b0_0, 8, 1; + %set/v v0x128db00_0, 8, 1; %jmp T_5; .thread T_5; - .scope S_0x1c1b730; + .scope S_0x1241730; T_6 ; %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; %vpi_call 2 26 "$dumpvars"; - %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; - %set/v v0x1c6b9b0_0, 0, 1; - %delay 400, 0; - %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 1, 1; - %delay 100, 0; - %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 0, 1; - %delay 2, 0; - %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 1, 1; + %set/v v0x128dd00_0, 0, 1; + %delay 50, 0; + %set/v v0x128dd00_0, 1, 1; + %delay 160, 0; + %set/v v0x128dd00_0, 0, 1; + %delay 70, 0; + %set/v v0x128dd00_0, 1, 1; + %delay 10, 0; + %set/v v0x128dd00_0, 0, 1; + %delay 80, 0; + %set/v v0x128dd00_0, 1, 1; + %delay 60, 0; + %set/v v0x128dd00_0, 0, 1; %delay 100, 0; - %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 0, 1; - %delay 300, 0; - %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 1, 1; - %delay 3, 0; - %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 0, 1; + %set/v v0x128dd00_0, 1, 1; + %delay 65, 0; + %set/v v0x128dd00_0, 0, 1; %delay 100, 0; - %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %set/v v0x1c6b9b0_0, 1, 1; - %delay 200, 0; - %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; - %vpi_call 2 46 "$finish"; + %set/v v0x128dd00_0, 1, 1; + %delay 70, 0; + %set/v v0x128dd00_0, 0, 1; + %delay 150, 0; + %vpi_call 2 77 "$finish"; %end; .thread T_6; # The file index is used to find the file name in the following table. From e6150710bf2f46942fd0b49a983ac4d76d5d237f Mon Sep 17 00:00:00 2001 From: mjakus Date: Mon, 23 Oct 2017 20:11:49 -0400 Subject: [PATCH 07/39] Never fear, GTKWave is fine --- Maggie and Logan Work Plan | 21 ---- README.md | 221 ------------------------------------- datamemory.v | 31 ------ inputconditioner.t.v | 60 +++++----- inputconditioner.v | 2 +- inputconditioner.vcd | 170 +++++++++++++++++----------- spimemory.v | 17 --- test | 172 ++++++++++++++++------------- test1 | 106 ------------------ 9 files changed, 236 insertions(+), 564 deletions(-) delete mode 100644 Maggie and Logan Work Plan delete mode 100644 README.md delete mode 100644 datamemory.v delete mode 100644 spimemory.v delete mode 100755 test1 diff --git a/Maggie and Logan Work Plan b/Maggie and Logan Work Plan deleted file mode 100644 index 061d559..0000000 --- a/Maggie and Logan Work Plan +++ /dev/null @@ -1,21 +0,0 @@ -CompArch Lab 2 Work Plan -Logan and Maggie -10/20/17 - -Understand what SPI memory is. Time: 1 hours. Due:10/22 -Create input conditioner. Time: 1 hour. Due: End of day, 10/22 -Write test bench for input conditioner. Time: 1 hour. Due: End of day, 10/23 -Create shift register. Time: 3 hours. Due: 9 pm, 10/24 -Write test bench for input conditioner. Time: 2 hours. Due: 10 pm, 10/24 -Load input conditioner & shift register onto FPGA. Time: 2 hours. Due: End of day, October 24 -Write complete test bench for what we have so far Time: 1 hours Due: End of day, October 25 -Midpoint Deliverable writeup Time: 2 hours Due: End of day October 25 -Read about FSM & Maggie double checks her understanding of things. Time: 1 hour. Due: 10/24 -Create drawing of FSM Time: 0.5 hours Due: End of day October 24 -Check FSM with an instructor Time: 0.5 hours Due: End of day October 24 -Code FSM Time: 2 hours Due: End of day October 25 -Finish SPI module Time: 5 hours Due: End of day October 28 -Write and evaluate testbench Time: 3 hours Due: End of day October 30 -Write report Time: 2 hours Due: End of day November 1 - -Total time: 27 hours diff --git a/README.md b/README.md deleted file mode 100644 index 8b93257..0000000 --- a/README.md +++ /dev/null @@ -1,221 +0,0 @@ -# CompArch Lab 2: SPI Memory - -**Work Plan due:** Monday, October 23 - -**Midpoint Check In due:** Wednesday, October 25 - -**Lab due:** Thursday, November 2 - -In this lab you will create an [SPI](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) Memory and instantiate it on FPGA. You will also create an automated test harness and use it to verify your memory (and possibly the memories of the other groups in the class). - -System Diagram - -You will work in groups of ~3. You may shuffle teams from previous labs if you so choose. - -## Work Plan ## - -Draft a work plan for this lab. Break down the lab in to small portions, and for each portion predict how long it will take (in hours) and when it will be done by (date). Use your work plan reflection from Lab 1 to help with this task. - -**Note:** If you think you will need an extension for this lab (e.g. due to approved travel), the work plan is the time to ask for it. - -**Submit this plan by the end of the day Monday, October 23** by pushing `work_plan.txt` to GitHub (no pull request needed). Markdown/PDF format also OK. - -## Input Conditioning ## - -The Input Conditioning subcircuit serves three purposes: - -1. **Input Synchronization**: The pair of D flip-flops at the front of this unit synchronize the external signal to the internal clock domain. The setup and hold requirements of the first flip-flop will likely be violated – its input can occur at any phase offset with respect to the internal oscillator. The second flip-flop takes the partially synchronized signal and brings it fully into phase with the internal domain. - -1. **Input Debouncing**: Buttons and Switches are notoriously noisy, and may be unstable for several milliseconds after a transition due to mechanical oscillations. Purely electrical signal sources may also show similar (but much less severe) oscillations due to noise and signal reflections. This circuit cleans up that oscillation by waiting for it to stabilize. - -1. **Edge Detection**: These signals are asserted for a single clock cycle on each positive and negative edge of the external signal. These are used by other subcircuits to emulate `@(posedge ___)` type behaviors without creating extra clock domains. - -Glitch Suppression and Edge Detection - -_Glitch Suppression and Edge Detection_ - -Start with the behavioral Verilog module provided in `inputconditioner.v`. - -Input conditioner box diagram - -Modify the module so that the `positiveedge` and `negativeedge` output signals are correctly generated. These signals should be high for exactly one clock period when `conditioned` has a positive/negative edge, starting in the same clock period that `conditioned` transitions. - -Note: There are several possible ways to generate the edge signals. Remember that `assign` statements are continuous and operate on `wire`s, while assignments in `always` blocks (e.g. nonblocking `<=`) operate on `reg`s. - -### Input Conditioner Deliverables ### - - Complete module in `inputconditioner.v` - - Your test bench `inputconditioner.t.v` demonstrates the three input conditioner functions (i.e. synchronization, debouncing, edge detection) - - Test script that executes the test bench and generates wave forms showing the correct operation of your input conditioner. Include images of these waveform(s) in your final report. - - In your final report, include a circuit diagram of the structural circuit for the input conditioner. This should be drawn from primitives such as D flip-flops, adders, muxes, and basic gates. - - If the main system clock is running at 50MHz, what is the maximum length input glitch that will be suppressed by this design for a `waittime` of 10? Include the analysis in your report. - -## Shift Register ## -Create a shift register supporting both "Serial In, Parallel Out" and "Parallel In, Serial Out" modes of operation. It should have the following module definition: - -```verilog -module shiftregister -#(parameter width = 8) -( -input clk, // FPGA Clock -input peripheralClkEdge, // Edge indicator -input parallelLoad, // 1 = Load shift reg with parallelDataIn -input [width-1:0] parallelDataIn, // Load shift reg in parallel -input serialDataIn, // Load shift reg serially -output [width-1:0] parallelDataOut, // Shift reg data contents -output serialDataOut // Positive edge synchronized -); -``` - -The shift register is clocked by the main system oscillator `clk` running at 50MHz. All behaviors are synchronous to this clock: - -1. When the peripheral clock `peripheralClkEdge` has an edge, the shift register advances one position: `serialDataIn` is loaded into the LSB (Least Significant Bit), and the rest of the bits shift up by one. This uses the Input Conditioner's edge detection capabilities. -1. When `parallelLoad` is asserted, the shift register will take the value of `parallelDataIn`. -1. `serialDataOut` always presents the Most Significant Bit of the shift register. -1. `parallelDataOut` always presents the entirety of the contents of the shift register. - -Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. You may want to look at Verilog's `{}` concatenate syntax for implementing the serial behavior. - -It is good design practice to decide which behavior will "win" if a parallel load and a serial shift happen in the same clock edge. Otherwise the synthesizer will make that decision for you (likely without a warning). - -### Shift Register Deliverables ### - - Complete module in `shiftregister.v` - - Your test bench in `shiftregister.t.v` demonstrating both modes of operation for the shift register. - - In your final report, you should describe your test bench strategy. - - -## Midpoint Check In ## - -Create a top-level module with the following structure and load it onto the FPGA: - -Midpoint Check In Structure - -The parallel data input of the shift register is tied to a constant value, and the load is triggered when button 0 is pressed. - -Switches 0 and 1 allow manual control of the serial input. - -LEDs show the state of the shift register (note: you only have 4 to work with, so you will have to show a subset of bits, use the Lab 0 trick, or borrow an external LED board) - -### Loading to FPGA ### -Load the shift register and the input conditioners onto the Zybo board, following the same procedure as for Lab0. - -### Midpoint Deliverables ### - -Push the module described above to GitHub as `midpoint.v`. Because testing will be done by hand, no Verilog test bench is required for this file. - -Design a test sequence that demonstrates successful operation of this portion of the lab. Provide a short written description of what the test engineer is to do, and what the state of the LEDs should be at each step. - -Demonstrate your test to a NINJA, or record a short video/gif of the execution and submit the link (please don't push huge videos to GitHub. - -**Midpoint Check In must be completed by Wedneday, October 25** - - -## SPI Memory ## - -You now have everything you need to create a complete SPI memory. We will make it 128 bytes in size. It will have the following module definition: - -```verilog -module spiMemory -( - input clk, // FPGA clock - input sclk_pin, // SPI clock - input cs_pin, // SPI chip select - output miso_pin, // SPI master in slave out - input mosi_pin, // SPI master out slave in - output [3:0] leds // LEDs for debugging -) -``` - -The `SCLK`, `CS`, `MISO`, and `MOSI` signals obey the SPI standard. The LED outputs are in case you need debugging information. - -### Behavior ### - -Each transaction begins with the Chip Select `CS` line being asserted `low`. Whenever `CS` is `high`, the memory ignores all other inputs, tri-states `MISO`, and resets any communication state machines. - -Next, 8 bits are clocked in by the Master. The first 7 bits are the memory address, Most Significant Bit first. The 8th bit is the `R/~W` flag: Read when high, Write when low. - -For a `Write` operation, the master will then clock in 8 bits of data and de-assert `CS`. - -For a `Read` operation, the slave will assert `MISO` and clock out the data found at `address`. - -Data is always presented on the falling edge, and always read on the rising edge of `SCLK`. - -#### Write operation #### - -Write operation timing diagram - -#### Read operation #### - -Read operation timing diagram - -### Schematic ### - -SPI memory schematic - -This is a _recommended_ schematic for the SPI Memory. You may implement your design however you prefer, as long as it meets the specification shown in the waveforms above. The Serial Out pin is synchronized to the falling edge of `SCLK` to obey the standard we are using (Data is presented on the falling edge, and captured on the rising edge).  - -### Finite State Machine ### - -The schematic above uses a finite state machine to provide the appropriate control signals at the right times, and you will likely want to do the same. Begin by drawing the states and transitions of your controller during both read and write operations on paper. Next construct a table describing what all the control signals should be in each state, and then implement and test your FSM. We strongly suggest that you show your paper design to an instructor to get feedback first. - - -## SPI Memory Testing ## - - -### Test Strategy ### -Your final report should include a detailed analysis of your testing strategy. Why did you choose the test sequences you did? - -### External testing (optional) ### - -You may also route your SPI port to the pins of the FPGA, and test it with an external device (such as an Arduino). Talk to the NINJAs if you're interested in this approach. - - -## Final submission ## - -Compile a report (PDF or Markdown) with all the information requested above, plus a short reflection/analysis of your work plan compared to reality. Push the report along with all your Verilog modules, testbenches, and scripts to GitHub and submit a pull request. - - -## Notes/Hints ## - -### Input Conditioning ### - -You may need to adjust your deglitching wait period differently for when it is driven by switches vs when it is driven by the tester. Switches are much noisier. - -### Autograde Etiquette ## - -The autograder will compile all Verilog files that are in your repository. This means that things like `InputConditioner_OLD.v` may cause naming conflicts if they have the same modules inside. Make sure that you do not have multiple modules with the same name. - - -### FPGA Synthesis Preparation ### - -Make sure that each of your always blocks' sensitivity lists are only `always @(posedge clk)`. Other sensitivity lists may cause clock gating. - -The Xilinx synthesizer obeys the `initial` block syntax with varying degrees of success. To initialize a register, do so in its declaration: `reg regname = 0;`. This technique does not work with 2 dimensional arrays. - -### FSM Debugging ### -Icarus doesn’t have enumeration support. To make your debugging life a little easier, you can define your state machine states with parameters. Using parameters local to the module that uses the states keeps your name space a little cleaner. - -```verilog -parameter state_GETTING_ADDRESS = 0; -parameter state_GOT_ADDRESS = 1; -parameter state_READ_1 = 2; -parameter state_READ_2 = 3; -``` - -You can also use translate filters in GTKWave to translate from the signal values back into meaningful names. For example, say you have the following trace: - -Default GTKWave trace - -If you write a filter file like the one below, you can highlight the signals of interest and select `Data Format > Translate Filter File` to show the human-readable aliases instead. - -``` -# Example filter file -# Each line has a value (which much match what is in the wave viewer exactly) and a string alias to replace the value if found -00 Zero -01 First -03 Third -``` -GTKWave trace with aliases - -More information about GTKWave filtering can be found in the [GTKWave User's Guide (PDF)](http://gtkwave.sourceforge.net/gtkwave.pdf). - -You will need to keep the parameters and filter file synchronized by hand. diff --git a/datamemory.v b/datamemory.v deleted file mode 100644 index 0d82131..0000000 --- a/datamemory.v +++ /dev/null @@ -1,31 +0,0 @@ -//------------------------------------------------------------------------ -// Data Memory -// Positive edge triggered -// dataOut always has the value mem[address] -// If writeEnable is true, writes dataIn to mem[address] -//------------------------------------------------------------------------ - -module datamemory -#( - parameter addresswidth = 7, - parameter depth = 2**addresswidth, - parameter width = 8 -) -( - input clk, - output reg [width-1:0] dataOut, - input [addresswidth-1:0] address, - input writeEnable, - input [width-1:0] dataIn -) - - - reg [width-1:0] memory [depth-1:0]; - - always @(posedge clk) begin - if(writeEnable) - memory[address] <= dataIn; - dataOut <= memory[address]; - end - -endmodule diff --git a/inputconditioner.t.v b/inputconditioner.t.v index 93f54d8..baa943e 100644 --- a/inputconditioner.t.v +++ b/inputconditioner.t.v @@ -25,37 +25,42 @@ module testConditioner(); $dumpfile("inputconditioner.vcd"); $dumpvars(); -// $display(" clk | pin | conditioned | -edge| + edge"); -// pin = 0; #50 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #80 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #2 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #90 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #8 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #150 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #50 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #15 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #1 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #50 +$display(" clk | pin | conditioned | -edge| + edge"); +pin = 0; #50 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #80 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #12 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #70 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #90 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #8 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #70 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #150 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #50 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #15 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #1 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #70 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #50 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #5 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #280 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); // something shiesty is going on with the passing from synchronizer 1 to the conditioned signal. // I'll try to take a look at it again before we meet. // See GTK wave simulation with these paramters to observe jankness with your own eyes. - +/* pin = 0; #50 pin = 1; #160 pin = 0; #70 @@ -69,6 +74,7 @@ pin = 0; #100 pin = 1; #70 pin = 0; #150 +*/ // pin = 1; #50 // pin = 0; #15 // pin = 1; #1 diff --git a/inputconditioner.v b/inputconditioner.v index 280ff98..d6b57f5 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -41,7 +41,7 @@ always @(posedge clk ) begin end else counter <= counter+1; - $display("counter iterated"); + $display("counter iterated"); end if(positiveedge == 1) diff --git a/inputconditioner.vcd b/inputconditioner.vcd index 8fa5bcc..616f665 100644 --- a/inputconditioner.vcd +++ b/inputconditioner.vcd @@ -1,5 +1,5 @@ $date - Mon Oct 23 10:04:33 2017 + Mon Oct 23 19:58:44 2017 $end $version Icarus Verilog @@ -90,13 +90,21 @@ b10 ) 0$ 0& #130 +0, b11 ) 1$ 1& +0% +0' #140 0$ 0& +#142 +1% +1' #150 +0- +1, 1+ 1# 1( @@ -108,156 +116,163 @@ b0 ) 0$ 0& #170 +1- 0+ 0# +b1 ) 1$ 1& #180 0$ 0& #190 +b0 ) 1$ 1& #200 0$ 0& #210 -0, 1$ 1& +#212 0% 0' #220 0$ 0& #230 -0- +0, 1$ 1& #240 0$ 0& #250 -b1 ) +0- 1$ 1& #260 0$ 0& #270 -b10 ) +b1 ) 1$ 1& #280 0$ 0& -1% -1' #290 -b11 ) +b10 ) 1$ 1& -0% -0' #300 0$ 0& +#302 +1% +1' #310 -1* -1" -0( -0! -b0 ) +b11 ) +0% +0' 1$ 1& #320 0$ 0& #330 -0* -0" +1* +1" +0( +0! +b0 ) 1$ 1& #340 0$ 0& #350 +0* +0" 1$ 1& #360 0$ 0& #370 -1, 1$ 1& -1% -1' #380 0$ 0& +1% +1' #390 -1- +1, 1$ 1& #400 0$ 0& #410 -b1 ) +1- 1$ 1& #420 0$ 0& #430 -0, -b10 ) +b1 ) 1$ 1& -0% -0' #440 0$ 0& #450 -0- -b11 ) +b10 ) 1$ 1& #460 0$ 0& #470 -b0 ) +b11 ) 1$ 1& #480 0$ 0& #490 +1+ +1# +1( +1! +b0 ) 1$ 1& #500 0$ 0& #510 +0+ +0# 1$ 1& #520 0$ 0& #530 -1, +0, 1$ 1& -1% -1' +0% +0' #540 0$ 0& #550 -1- +0- 1$ 1& #560 @@ -270,18 +285,24 @@ b1 ) #580 0$ 0& +1% +1' #590 +1, b10 ) 1$ 1& #595 0% 0' +#596 +1% +1' #600 0$ 0& #610 -0, +1- b11 ) 1$ 1& @@ -289,11 +310,6 @@ b11 ) 0$ 0& #630 -0- -1+ -1# -1( -1! b0 ) 1$ 1& @@ -301,80 +317,75 @@ b0 ) 0$ 0& #650 -0+ -0# -b1 ) 1$ 1& #660 0$ 0& +#666 +0% +0' #670 -b10 ) +0, 1$ 1& #680 0$ 0& #690 -b11 ) +0- 1$ 1& -#695 -1% -1' #700 0$ 0& #710 -1, -1* -1" -0( -0! -b0 ) +b1 ) 1$ 1& +#716 +1% +1' #720 0$ 0& +#721 +0% +0' #730 -1- -0* -0" +b10 ) 1$ 1& #740 0$ 0& #750 -b1 ) +b11 ) 1$ 1& #760 0$ 0& -#765 -0% -0' #770 -0, -b10 ) +1* +1" +0( +0! +b0 ) 1$ 1& #780 0$ 0& #790 -0- -b11 ) +0* +0" 1$ 1& #800 0$ 0& #810 -b0 ) 1$ 1& #820 @@ -407,4 +418,31 @@ b0 ) #910 1$ 1& -#915 +#920 +0$ +0& +#930 +1$ +1& +#940 +0$ +0& +#950 +1$ +1& +#960 +0$ +0& +#970 +1$ +1& +#980 +0$ +0& +#990 +1$ +1& +#1000 +0$ +0& +#1001 diff --git a/spimemory.v b/spimemory.v deleted file mode 100644 index c6ed4f7..0000000 --- a/spimemory.v +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------ -// SPI Memory -//------------------------------------------------------------------------ - -module spiMemory -( - input clk, // FPGA clock - input sclk_pin, // SPI clock - input cs_pin, // SPI chip select - output miso_pin, // SPI master in slave out - input mosi_pin, // SPI master out slave in - output [3:0] leds // LEDs for debugging -) - - -endmodule - diff --git a/test b/test index 142099c..967904a 100755 --- a/test +++ b/test @@ -4,161 +4,185 @@ :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; -S_0x1241730 .scope module, "testConditioner" "testConditioner" 2 6; +S_0x1d6e730 .scope module, "testConditioner" "testConditioner" 2 6; .timescale 0 0; -v0x128db00_0 .var "clk", 0 0; -v0x128dba0_0 .net "conditioned", 0 0, v0x128d600_0; 1 drivers -v0x128dc50_0 .net "falling", 0 0, v0x128d740_0; 1 drivers -v0x128dd00_0 .var "pin", 0 0; -v0x128dde0_0 .net "rising", 0 0, v0x128d890_0; 1 drivers -S_0x1241820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1241730; +v0x1dc3f00_0 .var "clk", 0 0; +v0x1dc3fa0_0 .net "conditioned", 0 0, v0x1dc3a00_0; 1 drivers +v0x1dc4050_0 .net "falling", 0 0, v0x1dc3b40_0; 1 drivers +v0x1dc4100_0 .var "pin", 0 0; +v0x1dc41e0_0 .net "rising", 0 0, v0x1dc3c90_0; 1 drivers +S_0x1d6e820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1d6e730; .timescale 0 0; -P_0x12423c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x12423f0 .param/l "waittime" 3 19, +C4<011>; -v0x12422c0_0 .net "clk", 0 0, v0x128db00_0; 1 drivers -v0x128d600_0 .var "conditioned", 0 0; -v0x128d6a0_0 .var "counter", 2 0; -v0x128d740_0 .var "negativeedge", 0 0; -v0x128d7f0_0 .net "noisysignal", 0 0, v0x128dd00_0; 1 drivers -v0x128d890_0 .var "positiveedge", 0 0; -v0x128d970_0 .var "synchronizer0", 0 0; -v0x128da10_0 .var "synchronizer1", 0 0; -E_0x1255c30 .event posedge, v0x12422c0_0; - .scope S_0x1241820; +P_0x1d6f3c8 .param/l "counterwidth" 3 18, +C4<011>; +P_0x1d6f3f0 .param/l "waittime" 3 19, +C4<011>; +v0x1d6f2c0_0 .net "clk", 0 0, v0x1dc3f00_0; 1 drivers +v0x1dc3a00_0 .var "conditioned", 0 0; +v0x1dc3aa0_0 .var "counter", 2 0; +v0x1dc3b40_0 .var "negativeedge", 0 0; +v0x1dc3bf0_0 .net "noisysignal", 0 0, v0x1dc4100_0; 1 drivers +v0x1dc3c90_0 .var "positiveedge", 0 0; +v0x1dc3d70_0 .var "synchronizer0", 0 0; +v0x1dc3e10_0 .var "synchronizer1", 0 0; +E_0x1d82a50 .event posedge, v0x1d6f2c0_0; + .scope S_0x1d6e820; T_0 ; - %set/v v0x128d6a0_0, 0, 3; + %set/v v0x1dc3aa0_0, 0, 3; %end; .thread T_0; - .scope S_0x1241820; + .scope S_0x1d6e820; T_1 ; - %set/v v0x128d970_0, 0, 1; + %set/v v0x1dc3d70_0, 0, 1; %end; .thread T_1; - .scope S_0x1241820; + .scope S_0x1d6e820; T_2 ; - %set/v v0x128da10_0, 0, 1; + %set/v v0x1dc3e10_0, 0, 1; %end; .thread T_2; - .scope S_0x1241820; + .scope S_0x1d6e820; T_3 ; - %wait E_0x1255c30; - %load/v 8, v0x128d600_0, 1; - %load/v 9, v0x128da10_0, 1; + %wait E_0x1d82a50; + %load/v 8, v0x1dc3a00_0, 1; + %load/v 9, v0x1dc3e10_0, 1; %cmp/u 8, 9, 1; %jmp/0xz T_3.0, 4; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 0; + %assign/v0 v0x1dc3aa0_0, 0, 0; %jmp T_3.1; T_3.0 ; - %load/v 8, v0x128d6a0_0, 3; + %load/v 8, v0x1dc3aa0_0, 3; %mov 11, 0, 1; %cmpi/u 8, 3, 4; %jmp/0xz T_3.2, 4; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 0; - %load/v 8, v0x128da10_0, 1; + %assign/v0 v0x1dc3aa0_0, 0, 0; + %load/v 8, v0x1dc3e10_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128d600_0, 0, 8; - %load/v 8, v0x128d600_0, 1; + %assign/v0 v0x1dc3a00_0, 0, 8; + %load/v 8, v0x1dc3a00_0, 1; %mov 9, 0, 1; %cmpi/u 8, 0, 2; %mov 8, 4, 1; - %load/v 9, v0x128da10_0, 1; + %load/v 9, v0x1dc3e10_0, 1; %mov 10, 0, 2; %cmpi/u 9, 1, 3; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.4, 8; %ix/load 0, 1, 0; - %assign/v0 v0x128d890_0, 0, 1; + %assign/v0 v0x1dc3c90_0, 0, 1; %vpi_call 3 35 "$display", "positive edge gotten"; T_3.4 ; - %load/v 8, v0x128d600_0, 1; + %load/v 8, v0x1dc3a00_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %mov 8, 4, 1; - %load/v 9, v0x128da10_0, 1; + %load/v 9, v0x1dc3e10_0, 1; %mov 10, 0, 1; %cmpi/u 9, 0, 2; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.6, 8; %ix/load 0, 1, 0; - %assign/v0 v0x128d740_0, 0, 1; + %assign/v0 v0x1dc3b40_0, 0, 1; %vpi_call 3 39 "$display", "negative edge gotten"; T_3.6 ; %jmp T_3.3; T_3.2 ; - %load/v 8, v0x128d6a0_0, 3; + %load/v 8, v0x1dc3aa0_0, 3; %mov 11, 0, 29; %addi 8, 1, 32; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 8; + %assign/v0 v0x1dc3aa0_0, 0, 8; T_3.3 ; %vpi_call 3 44 "$display", "counter iterated"; T_3.1 ; - %load/v 8, v0x128d890_0, 1; + %load/v 8, v0x1dc3c90_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.8, 4; %ix/load 0, 1, 0; - %assign/v0 v0x128d890_0, 0, 0; + %assign/v0 v0x1dc3c90_0, 0, 0; T_3.8 ; - %load/v 8, v0x128d740_0, 1; + %load/v 8, v0x1dc3b40_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.10, 4; %ix/load 0, 1, 0; - %assign/v0 v0x128d740_0, 0, 0; + %assign/v0 v0x1dc3b40_0, 0, 0; T_3.10 ; - %load/v 8, v0x128d7f0_0, 1; + %load/v 8, v0x1dc3bf0_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128d970_0, 0, 8; - %load/v 8, v0x128d970_0, 1; + %assign/v0 v0x1dc3d70_0, 0, 8; + %load/v 8, v0x1dc3d70_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128da10_0, 0, 8; + %assign/v0 v0x1dc3e10_0, 0, 8; %jmp T_3; .thread T_3; - .scope S_0x1241730; + .scope S_0x1d6e730; T_4 ; - %set/v v0x128db00_0, 0, 1; + %set/v v0x1dc3f00_0, 0, 1; %end; .thread T_4; - .scope S_0x1241730; + .scope S_0x1d6e730; T_5 ; %delay 10, 0; - %load/v 8, v0x128db00_0, 1; + %load/v 8, v0x1dc3f00_0, 1; %inv 8, 1; - %set/v v0x128db00_0, 8, 1; + %set/v v0x1dc3f00_0, 8, 1; %jmp T_5; .thread T_5; - .scope S_0x1241730; + .scope S_0x1d6e730; T_6 ; %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; %vpi_call 2 26 "$dumpvars"; - %set/v v0x128dd00_0, 0, 1; + %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; + %set/v v0x1dc4100_0, 0, 1; %delay 50, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 160, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 70, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 10, 0; - %set/v v0x128dd00_0, 0, 1; + %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; %delay 80, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 60, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 100, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 65, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 100, 0; - %set/v v0x128dd00_0, 1, 1; + %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 12, 0; + %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; + %delay 70, 0; + %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 90, 0; + %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; + %delay 8, 0; + %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; %delay 70, 0; - %set/v v0x128dd00_0, 0, 1; + %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; %delay 150, 0; - %vpi_call 2 77 "$finish"; + %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 50, 0; + %vpi_call 2 46 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; + %delay 15, 0; + %vpi_call 2 48 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 1, 0; + %vpi_call 2 50 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; + %delay 70, 0; + %vpi_call 2 52 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 50, 0; + %vpi_call 2 54 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 1, 1; + %delay 5, 0; + %vpi_call 2 56 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %set/v v0x1dc4100_0, 0, 1; + %delay 280, 0; + %vpi_call 2 58 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; + %vpi_call 2 86 "$finish"; %end; .thread T_6; # The file index is used to find the file name in the following table. diff --git a/test1 b/test1 deleted file mode 100755 index 56369d5..0000000 --- a/test1 +++ /dev/null @@ -1,106 +0,0 @@ -#! /usr/bin/vvp -:ivl_version "0.9.7 " "(v0_9_7)"; -:vpi_time_precision + 0; -:vpi_module "system"; -:vpi_module "v2005_math"; -:vpi_module "va_math"; -S_0x1739730 .scope module, "inputconditioner" "inputconditioner" 2 9; - .timescale 0 0; -P_0x1739828 .param/l "counterwidth" 2 18, +C4<011>; -P_0x1739850 .param/l "waittime" 2 19, +C4<011>; -v0x173a3c0_0 .net "clk", 0 0, C4; 0 drivers -v0x177f070_0 .var "conditioned", 0 0; -v0x177f110_0 .var "counter", 2 0; -v0x177f1b0_0 .var "negativeedge", 0 0; -v0x177f260_0 .net "noisysignal", 0 0, C4; 0 drivers -v0x177f300_0 .var "positiveedge", 0 0; -v0x177f3e0_0 .var "synchronizer0", 0 0; -v0x177f480_0 .var "synchronizer1", 0 0; -E_0x17711c0 .event posedge, v0x173a3c0_0; - .scope S_0x1739730; -T_0 ; - %set/v v0x177f110_0, 0, 3; - %end; - .thread T_0; - .scope S_0x1739730; -T_1 ; - %set/v v0x177f3e0_0, 0, 1; - %end; - .thread T_1; - .scope S_0x1739730; -T_2 ; - %set/v v0x177f480_0, 0, 1; - %end; - .thread T_2; - .scope S_0x1739730; -T_3 ; - %wait E_0x17711c0; - %load/v 8, v0x177f070_0, 1; - %load/v 9, v0x177f480_0, 1; - %cmp/u 8, 9, 1; - %jmp/0xz T_3.0, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x177f110_0, 0, 0; - %jmp T_3.1; -T_3.0 ; - %load/v 8, v0x177f110_0, 3; - %mov 11, 0, 1; - %cmpi/u 8, 3, 4; - %jmp/0xz T_3.2, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x177f110_0, 0, 0; - %load/v 8, v0x177f480_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x177f070_0, 0, 8; - %load/v 8, v0x177f070_0, 1; - %mov 9, 0, 1; - %cmpi/u 8, 0, 2; - %mov 8, 4, 1; - %load/v 9, v0x177f480_0, 1; - %mov 10, 0, 2; - %cmpi/u 9, 1, 3; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.4, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x177f300_0, 0, 1; -T_3.4 ; - %load/v 8, v0x177f070_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %mov 8, 4, 1; - %load/v 9, v0x177f480_0, 1; - %mov 10, 0, 1; - %cmpi/u 9, 0, 2; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.6, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x177f1b0_0, 0, 1; -T_3.6 ; - %jmp T_3.3; -T_3.2 ; - %load/v 8, v0x177f110_0, 3; - %mov 11, 0, 29; - %addi 8, 1, 32; - %ix/load 0, 3, 0; - %assign/v0 v0x177f110_0, 0, 8; -T_3.3 ; -T_3.1 ; - %load/v 8, v0x177f260_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x177f3e0_0, 0, 8; - %load/v 8, v0x177f3e0_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x177f480_0, 0, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x177f300_0, 0, 0; - %ix/load 0, 1, 0; - %assign/v0 v0x177f1b0_0, 0, 0; - %jmp T_3; - .thread T_3; -# The file index is used to find the file name in the following table. -:file_names 3; - "N/A"; - ""; - "inputconditioner.v"; From cde4edc6965a3984e9e65ac236cbcc72a6e6b692 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Mon, 23 Oct 2017 22:24:53 -0400 Subject: [PATCH 08/39] git debacle part 3 --- inputconditioner.t.v | 66 ++++---------- inputconditioner.vcd | 209 +++++++++++++++++++++++++++---------------- shiftregister.v | 7 +- test | 155 ++++++++++++++++---------------- 4 files changed, 228 insertions(+), 209 deletions(-) diff --git a/inputconditioner.t.v b/inputconditioner.t.v index 93f54d8..66d03d9 100644 --- a/inputconditioner.t.v +++ b/inputconditioner.t.v @@ -25,57 +25,23 @@ module testConditioner(); $dumpfile("inputconditioner.vcd"); $dumpvars(); -// $display(" clk | pin | conditioned | -edge| + edge"); -// pin = 0; #50 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #80 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #2 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #90 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #8 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #150 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #50 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #15 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #1 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 1; #70 -// $display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -// pin = 0; #50 - -// something shiesty is going on with the passing from synchronizer 1 to the conditioned signal. -// I'll try to take a look at it again before we meet. -// See GTK wave simulation with these paramters to observe jankness with your own eyes. - -pin = 0; #50 -pin = 1; #160 -pin = 0; #70 -pin = 1; #10 -pin = 0; #80 - -pin = 1; #60 -pin = 0; #100 -pin = 1; #65 +$display(" clk | pin | conditioned | -edge| + edge"); +pin = 0; #400 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #2 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #300 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #3 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); pin = 0; #100 -pin = 1; #70 - -pin = 0; #150 -// pin = 1; #50 -// pin = 0; #15 -// pin = 1; #1 -// pin = 0; #70 -// pin = 1; #50 - - +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #200 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); $finish; end diff --git a/inputconditioner.vcd b/inputconditioner.vcd index 8fa5bcc..5c7309b 100644 --- a/inputconditioner.vcd +++ b/inputconditioner.vcd @@ -1,5 +1,5 @@ $date - Mon Oct 23 10:04:33 2017 + Sun Oct 22 15:36:43 2017 $end $version Icarus Verilog @@ -56,17 +56,13 @@ b10 ) 0$ 0& #50 -1, b11 ) 1$ 1& -1% -1' #60 0$ 0& #70 -1- 0( 0! b0 ) @@ -76,40 +72,30 @@ b0 ) 0$ 0& #90 -b1 ) 1$ 1& #100 0$ 0& #110 -b10 ) 1$ 1& #120 0$ 0& #130 -b11 ) 1$ 1& #140 0$ 0& #150 -1+ -1# -1( -1! -b0 ) 1$ 1& #160 0$ 0& #170 -0+ -0# 1$ 1& #180 @@ -122,60 +108,42 @@ b0 ) 0$ 0& #210 -0, 1$ 1& -0% -0' #220 0$ 0& #230 -0- 1$ 1& #240 0$ 0& #250 -b1 ) 1$ 1& #260 0$ 0& #270 -b10 ) 1$ 1& #280 0$ 0& -1% -1' #290 -b11 ) 1$ 1& -0% -0' #300 0$ 0& #310 -1* -1" -0( -0! -b0 ) 1$ 1& #320 0$ 0& #330 -0* -0" 1$ 1& #340 @@ -188,101 +156,101 @@ b0 ) 0$ 0& #370 -1, 1$ 1& -1% -1' #380 0$ 0& #390 -1- 1$ 1& #400 0$ 0& +1% +1' #410 -b1 ) +1, 1$ 1& #420 0$ 0& #430 -0, -b10 ) +1- 1$ 1& -0% -0' #440 0$ 0& #450 -0- -b11 ) +b1 ) 1$ 1& #460 0$ 0& #470 -b0 ) +b10 ) 1$ 1& #480 0$ 0& #490 +b11 ) 1$ 1& #500 0$ 0& +0% +0' +#502 +1% +1' #510 +1+ +1# +1( +1! +b0 ) 1$ 1& #520 0$ 0& #530 -1, +0+ +0# 1$ 1& -1% -1' #540 0$ 0& #550 -1- 1$ 1& #560 0$ 0& #570 -b1 ) 1$ 1& #580 0$ 0& #590 -b10 ) 1$ 1& -#595 -0% -0' #600 0$ 0& +#602 +0% +0' #610 0, -b11 ) 1$ 1& #620 @@ -290,19 +258,12 @@ b11 ) 0& #630 0- -1+ -1# -1( -1! -b0 ) 1$ 1& #640 0$ 0& #650 -0+ -0# b1 ) 1$ 1& @@ -320,14 +281,10 @@ b10 ) b11 ) 1$ 1& -#695 -1% -1' #700 0$ 0& #710 -1, 1* 1" 0( @@ -339,7 +296,6 @@ b0 ) 0$ 0& #730 -1- 0* 0" 1$ @@ -348,33 +304,24 @@ b0 ) 0$ 0& #750 -b1 ) 1$ 1& #760 0$ 0& -#765 -0% -0' #770 -0, -b10 ) 1$ 1& #780 0$ 0& #790 -0- -b11 ) 1$ 1& #800 0$ 0& #810 -b0 ) 1$ 1& #820 @@ -404,7 +351,115 @@ b0 ) #900 0$ 0& +#902 +1% +1' +#905 +0% +0' #910 1$ 1& -#915 +#920 +0$ +0& +#930 +1$ +1& +#940 +0$ +0& +#950 +1$ +1& +#960 +0$ +0& +#970 +1$ +1& +#980 +0$ +0& +#990 +1$ +1& +#1000 +0$ +0& +#1005 +1% +1' +#1010 +1, +1$ +1& +#1020 +0$ +0& +#1030 +1- +1$ +1& +#1040 +0$ +0& +#1050 +b1 ) +1$ +1& +#1060 +0$ +0& +#1070 +b10 ) +1$ +1& +#1080 +0$ +0& +#1090 +b11 ) +1$ +1& +#1100 +0$ +0& +#1110 +1+ +1# +1( +1! +b0 ) +1$ +1& +#1120 +0$ +0& +#1130 +0+ +0# +1$ +1& +#1140 +0$ +0& +#1150 +1$ +1& +#1160 +0$ +0& +#1170 +1$ +1& +#1180 +0$ +0& +#1190 +1$ +1& +#1200 +0$ +0& +#1205 diff --git a/shiftregister.v b/shiftregister.v index 207273f..c9af668 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -24,17 +24,12 @@ reg [width-1:0] shiftregistermem; // and then use the idea behind the behavioral flip flop below // so that you can pass things along as needed. -// confusion points: I don't know what the peripheral clock edge does. -// The assignement says that the bits advance when the periperal clock -// has an edge, but I don't know why you don't use the normal clock? - // from the assignment: // " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. // You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " always @(posedge clk) begin - peripheralCLkEdge <= clk; - + // Your Code Here end always @(posedge periperalClkEdge) diff --git a/test b/test index 142099c..942815b 100755 --- a/test +++ b/test @@ -4,161 +4,164 @@ :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; -S_0x1241730 .scope module, "testConditioner" "testConditioner" 2 6; +S_0x1c1b730 .scope module, "testConditioner" "testConditioner" 2 6; .timescale 0 0; -v0x128db00_0 .var "clk", 0 0; -v0x128dba0_0 .net "conditioned", 0 0, v0x128d600_0; 1 drivers -v0x128dc50_0 .net "falling", 0 0, v0x128d740_0; 1 drivers -v0x128dd00_0 .var "pin", 0 0; -v0x128dde0_0 .net "rising", 0 0, v0x128d890_0; 1 drivers -S_0x1241820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1241730; +v0x1c6b7b0_0 .var "clk", 0 0; +v0x1c6b850_0 .net "conditioned", 0 0, v0x1c6b2b0_0; 1 drivers +v0x1c6b900_0 .net "falling", 0 0, v0x1c6b3f0_0; 1 drivers +v0x1c6b9b0_0 .var "pin", 0 0; +v0x1c6ba90_0 .net "rising", 0 0, v0x1c6b540_0; 1 drivers +S_0x1c1b820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1c1b730; .timescale 0 0; -P_0x12423c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x12423f0 .param/l "waittime" 3 19, +C4<011>; -v0x12422c0_0 .net "clk", 0 0, v0x128db00_0; 1 drivers -v0x128d600_0 .var "conditioned", 0 0; -v0x128d6a0_0 .var "counter", 2 0; -v0x128d740_0 .var "negativeedge", 0 0; -v0x128d7f0_0 .net "noisysignal", 0 0, v0x128dd00_0; 1 drivers -v0x128d890_0 .var "positiveedge", 0 0; -v0x128d970_0 .var "synchronizer0", 0 0; -v0x128da10_0 .var "synchronizer1", 0 0; -E_0x1255c30 .event posedge, v0x12422c0_0; - .scope S_0x1241820; +P_0x1c1c3c8 .param/l "counterwidth" 3 18, +C4<011>; +P_0x1c1c3f0 .param/l "waittime" 3 19, +C4<011>; +v0x1c1c2c0_0 .net "clk", 0 0, v0x1c6b7b0_0; 1 drivers +v0x1c6b2b0_0 .var "conditioned", 0 0; +v0x1c6b350_0 .var "counter", 2 0; +v0x1c6b3f0_0 .var "negativeedge", 0 0; +v0x1c6b4a0_0 .net "noisysignal", 0 0, v0x1c6b9b0_0; 1 drivers +v0x1c6b540_0 .var "positiveedge", 0 0; +v0x1c6b620_0 .var "synchronizer0", 0 0; +v0x1c6b6c0_0 .var "synchronizer1", 0 0; +E_0x1c57a70 .event posedge, v0x1c1c2c0_0; + .scope S_0x1c1b820; T_0 ; - %set/v v0x128d6a0_0, 0, 3; + %set/v v0x1c6b350_0, 0, 3; %end; .thread T_0; - .scope S_0x1241820; + .scope S_0x1c1b820; T_1 ; - %set/v v0x128d970_0, 0, 1; + %set/v v0x1c6b620_0, 0, 1; %end; .thread T_1; - .scope S_0x1241820; + .scope S_0x1c1b820; T_2 ; - %set/v v0x128da10_0, 0, 1; + %set/v v0x1c6b6c0_0, 0, 1; %end; .thread T_2; - .scope S_0x1241820; + .scope S_0x1c1b820; T_3 ; - %wait E_0x1255c30; - %load/v 8, v0x128d600_0, 1; - %load/v 9, v0x128da10_0, 1; + %wait E_0x1c57a70; + %load/v 8, v0x1c6b2b0_0, 1; + %load/v 9, v0x1c6b6c0_0, 1; %cmp/u 8, 9, 1; %jmp/0xz T_3.0, 4; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 0; + %assign/v0 v0x1c6b350_0, 0, 0; %jmp T_3.1; T_3.0 ; - %load/v 8, v0x128d6a0_0, 3; + %load/v 8, v0x1c6b350_0, 3; %mov 11, 0, 1; %cmpi/u 8, 3, 4; %jmp/0xz T_3.2, 4; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 0; - %load/v 8, v0x128da10_0, 1; + %assign/v0 v0x1c6b350_0, 0, 0; + %load/v 8, v0x1c6b6c0_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128d600_0, 0, 8; - %load/v 8, v0x128d600_0, 1; + %assign/v0 v0x1c6b2b0_0, 0, 8; + %load/v 8, v0x1c6b2b0_0, 1; %mov 9, 0, 1; %cmpi/u 8, 0, 2; %mov 8, 4, 1; - %load/v 9, v0x128da10_0, 1; + %load/v 9, v0x1c6b6c0_0, 1; %mov 10, 0, 2; %cmpi/u 9, 1, 3; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.4, 8; %ix/load 0, 1, 0; - %assign/v0 v0x128d890_0, 0, 1; + %assign/v0 v0x1c6b540_0, 0, 1; %vpi_call 3 35 "$display", "positive edge gotten"; T_3.4 ; - %load/v 8, v0x128d600_0, 1; + %load/v 8, v0x1c6b2b0_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %mov 8, 4, 1; - %load/v 9, v0x128da10_0, 1; + %load/v 9, v0x1c6b6c0_0, 1; %mov 10, 0, 1; %cmpi/u 9, 0, 2; %mov 9, 4, 1; %and 8, 9, 1; %jmp/0xz T_3.6, 8; %ix/load 0, 1, 0; - %assign/v0 v0x128d740_0, 0, 1; + %assign/v0 v0x1c6b3f0_0, 0, 1; %vpi_call 3 39 "$display", "negative edge gotten"; T_3.6 ; %jmp T_3.3; T_3.2 ; - %load/v 8, v0x128d6a0_0, 3; + %load/v 8, v0x1c6b350_0, 3; %mov 11, 0, 29; %addi 8, 1, 32; %ix/load 0, 3, 0; - %assign/v0 v0x128d6a0_0, 0, 8; + %assign/v0 v0x1c6b350_0, 0, 8; T_3.3 ; %vpi_call 3 44 "$display", "counter iterated"; T_3.1 ; - %load/v 8, v0x128d890_0, 1; + %load/v 8, v0x1c6b540_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.8, 4; %ix/load 0, 1, 0; - %assign/v0 v0x128d890_0, 0, 0; + %assign/v0 v0x1c6b540_0, 0, 0; T_3.8 ; - %load/v 8, v0x128d740_0, 1; + %load/v 8, v0x1c6b3f0_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; %jmp/0xz T_3.10, 4; %ix/load 0, 1, 0; - %assign/v0 v0x128d740_0, 0, 0; + %assign/v0 v0x1c6b3f0_0, 0, 0; T_3.10 ; - %load/v 8, v0x128d7f0_0, 1; + %load/v 8, v0x1c6b4a0_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128d970_0, 0, 8; - %load/v 8, v0x128d970_0, 1; + %assign/v0 v0x1c6b620_0, 0, 8; + %load/v 8, v0x1c6b620_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x128da10_0, 0, 8; + %assign/v0 v0x1c6b6c0_0, 0, 8; %jmp T_3; .thread T_3; - .scope S_0x1241730; + .scope S_0x1c1b730; T_4 ; - %set/v v0x128db00_0, 0, 1; + %set/v v0x1c6b7b0_0, 0, 1; %end; .thread T_4; - .scope S_0x1241730; + .scope S_0x1c1b730; T_5 ; %delay 10, 0; - %load/v 8, v0x128db00_0, 1; + %load/v 8, v0x1c6b7b0_0, 1; %inv 8, 1; - %set/v v0x128db00_0, 8, 1; + %set/v v0x1c6b7b0_0, 8, 1; %jmp T_5; .thread T_5; - .scope S_0x1241730; + .scope S_0x1c1b730; T_6 ; %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; %vpi_call 2 26 "$dumpvars"; - %set/v v0x128dd00_0, 0, 1; - %delay 50, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 160, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 70, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 10, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 80, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 60, 0; - %set/v v0x128dd00_0, 0, 1; + %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 400, 0; + %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 100, 0; + %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 2, 0; + %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; %delay 100, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 65, 0; - %set/v v0x128dd00_0, 0, 1; + %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; + %delay 300, 0; + %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 3, 0; + %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 0, 1; %delay 100, 0; - %set/v v0x128dd00_0, 1, 1; - %delay 70, 0; - %set/v v0x128dd00_0, 0, 1; - %delay 150, 0; - %vpi_call 2 77 "$finish"; + %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %set/v v0x1c6b9b0_0, 1, 1; + %delay 200, 0; + %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x1c6b7b0_0, v0x1c6b9b0_0, v0x1c6b850_0, v0x1c6ba90_0, v0x1c6b900_0; + %vpi_call 2 46 "$finish"; %end; .thread T_6; # The file index is used to find the file name in the following table. From 70552fe616ef4c367278d3be87d4790e746d335b Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:27:13 -0400 Subject: [PATCH 09/39] debacle again --- test | 193 ----------------------------------------------------------- 1 file changed, 193 deletions(-) delete mode 100755 test diff --git a/test b/test deleted file mode 100755 index 967904a..0000000 --- a/test +++ /dev/null @@ -1,193 +0,0 @@ -#! /usr/bin/vvp -:ivl_version "0.9.7 " "(v0_9_7)"; -:vpi_time_precision + 0; -:vpi_module "system"; -:vpi_module "v2005_math"; -:vpi_module "va_math"; -S_0x1d6e730 .scope module, "testConditioner" "testConditioner" 2 6; - .timescale 0 0; -v0x1dc3f00_0 .var "clk", 0 0; -v0x1dc3fa0_0 .net "conditioned", 0 0, v0x1dc3a00_0; 1 drivers -v0x1dc4050_0 .net "falling", 0 0, v0x1dc3b40_0; 1 drivers -v0x1dc4100_0 .var "pin", 0 0; -v0x1dc41e0_0 .net "rising", 0 0, v0x1dc3c90_0; 1 drivers -S_0x1d6e820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x1d6e730; - .timescale 0 0; -P_0x1d6f3c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x1d6f3f0 .param/l "waittime" 3 19, +C4<011>; -v0x1d6f2c0_0 .net "clk", 0 0, v0x1dc3f00_0; 1 drivers -v0x1dc3a00_0 .var "conditioned", 0 0; -v0x1dc3aa0_0 .var "counter", 2 0; -v0x1dc3b40_0 .var "negativeedge", 0 0; -v0x1dc3bf0_0 .net "noisysignal", 0 0, v0x1dc4100_0; 1 drivers -v0x1dc3c90_0 .var "positiveedge", 0 0; -v0x1dc3d70_0 .var "synchronizer0", 0 0; -v0x1dc3e10_0 .var "synchronizer1", 0 0; -E_0x1d82a50 .event posedge, v0x1d6f2c0_0; - .scope S_0x1d6e820; -T_0 ; - %set/v v0x1dc3aa0_0, 0, 3; - %end; - .thread T_0; - .scope S_0x1d6e820; -T_1 ; - %set/v v0x1dc3d70_0, 0, 1; - %end; - .thread T_1; - .scope S_0x1d6e820; -T_2 ; - %set/v v0x1dc3e10_0, 0, 1; - %end; - .thread T_2; - .scope S_0x1d6e820; -T_3 ; - %wait E_0x1d82a50; - %load/v 8, v0x1dc3a00_0, 1; - %load/v 9, v0x1dc3e10_0, 1; - %cmp/u 8, 9, 1; - %jmp/0xz T_3.0, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x1dc3aa0_0, 0, 0; - %jmp T_3.1; -T_3.0 ; - %load/v 8, v0x1dc3aa0_0, 3; - %mov 11, 0, 1; - %cmpi/u 8, 3, 4; - %jmp/0xz T_3.2, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x1dc3aa0_0, 0, 0; - %load/v 8, v0x1dc3e10_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3a00_0, 0, 8; - %load/v 8, v0x1dc3a00_0, 1; - %mov 9, 0, 1; - %cmpi/u 8, 0, 2; - %mov 8, 4, 1; - %load/v 9, v0x1dc3e10_0, 1; - %mov 10, 0, 2; - %cmpi/u 9, 1, 3; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.4, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3c90_0, 0, 1; - %vpi_call 3 35 "$display", "positive edge gotten"; -T_3.4 ; - %load/v 8, v0x1dc3a00_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %mov 8, 4, 1; - %load/v 9, v0x1dc3e10_0, 1; - %mov 10, 0, 1; - %cmpi/u 9, 0, 2; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.6, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3b40_0, 0, 1; - %vpi_call 3 39 "$display", "negative edge gotten"; -T_3.6 ; - %jmp T_3.3; -T_3.2 ; - %load/v 8, v0x1dc3aa0_0, 3; - %mov 11, 0, 29; - %addi 8, 1, 32; - %ix/load 0, 3, 0; - %assign/v0 v0x1dc3aa0_0, 0, 8; -T_3.3 ; - %vpi_call 3 44 "$display", "counter iterated"; -T_3.1 ; - %load/v 8, v0x1dc3c90_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.8, 4; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3c90_0, 0, 0; -T_3.8 ; - %load/v 8, v0x1dc3b40_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.10, 4; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3b40_0, 0, 0; -T_3.10 ; - %load/v 8, v0x1dc3bf0_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3d70_0, 0, 8; - %load/v 8, v0x1dc3d70_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x1dc3e10_0, 0, 8; - %jmp T_3; - .thread T_3; - .scope S_0x1d6e730; -T_4 ; - %set/v v0x1dc3f00_0, 0, 1; - %end; - .thread T_4; - .scope S_0x1d6e730; -T_5 ; - %delay 10, 0; - %load/v 8, v0x1dc3f00_0, 1; - %inv 8, 1; - %set/v v0x1dc3f00_0, 8, 1; - %jmp T_5; - .thread T_5; - .scope S_0x1d6e730; -T_6 ; - %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; - %vpi_call 2 26 "$dumpvars"; - %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; - %set/v v0x1dc4100_0, 0, 1; - %delay 50, 0; - %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 80, 0; - %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 12, 0; - %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 70, 0; - %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 90, 0; - %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 8, 0; - %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 70, 0; - %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 150, 0; - %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 50, 0; - %vpi_call 2 46 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 15, 0; - %vpi_call 2 48 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 1, 0; - %vpi_call 2 50 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 70, 0; - %vpi_call 2 52 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 50, 0; - %vpi_call 2 54 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 1, 1; - %delay 5, 0; - %vpi_call 2 56 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %set/v v0x1dc4100_0, 0, 1; - %delay 280, 0; - %vpi_call 2 58 "$display", "%b | %b | %b | %b | %b", v0x1dc3f00_0, v0x1dc4100_0, v0x1dc3fa0_0, v0x1dc41e0_0, v0x1dc4050_0; - %vpi_call 2 86 "$finish"; - %end; - .thread T_6; -# The file index is used to find the file name in the following table. -:file_names 4; - "N/A"; - ""; - "inputconditioner.t.v"; - "./inputconditioner.v"; From 527ff5b81fe9de5ed2711ed224ef04913693f81e Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:31:09 -0400 Subject: [PATCH 10/39] Delete inputconditioner.t.v --- inputconditioner.t.v | 89 -------------------------------------------- 1 file changed, 89 deletions(-) delete mode 100644 inputconditioner.t.v diff --git a/inputconditioner.t.v b/inputconditioner.t.v deleted file mode 100644 index baa943e..0000000 --- a/inputconditioner.t.v +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------ -// Input Conditioner test bench -//------------------------------------------------------------------------ -`include "inputconditioner.v" - -module testConditioner(); - - - reg clk; - reg pin; - wire conditioned; - wire rising; - wire falling; - - inputconditioner dut(.clk(clk), - .noisysignal(pin), - .conditioned(conditioned), - .positiveedge(rising), - .negativeedge(falling)); - - initial clk=0; - always #10 clk=!clk; // 50MHz Clock - initial begin - -$dumpfile("inputconditioner.vcd"); -$dumpvars(); - -$display(" clk | pin | conditioned | -edge| + edge"); -pin = 0; #50 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #80 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #12 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #70 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #90 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #8 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #70 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #150 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #50 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #15 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #1 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #70 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #50 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 1; #5 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); -pin = 0; #280 -$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); - -// something shiesty is going on with the passing from synchronizer 1 to the conditioned signal. -// I'll try to take a look at it again before we meet. -// See GTK wave simulation with these paramters to observe jankness with your own eyes. -/* -pin = 0; #50 -pin = 1; #160 -pin = 0; #70 -pin = 1; #10 -pin = 0; #80 - -pin = 1; #60 -pin = 0; #100 -pin = 1; #65 -pin = 0; #100 -pin = 1; #70 - -pin = 0; #150 -*/ -// pin = 1; #50 -// pin = 0; #15 -// pin = 1; #1 -// pin = 0; #70 -// pin = 1; #50 - - - -$finish; -end - -endmodule From d180dcbc395cafa89e817fcb61db6f6ce8fbe6b4 Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:31:16 -0400 Subject: [PATCH 11/39] Delete inputconditioner.v --- inputconditioner.v | 60 ---------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 inputconditioner.v diff --git a/inputconditioner.v b/inputconditioner.v deleted file mode 100644 index d6b57f5..0000000 --- a/inputconditioner.v +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------ -// Input Conditioner -// 1) Synchronizes input to clock domain -// 2) Debounces input -// 3) Creates pulses at edge transitions -//------------------------------------------------------------------------ -// 50 MHz is 2 * 1-^-8 seconds per cycle - -module inputconditioner -( -input clk, // Clock domain to synchronize input to -input noisysignal, // (Potentially) noisy input signal -output reg conditioned, // Conditioned output signal -output reg positiveedge, // 1 clk pulse at rising edge of conditioned -output reg negativeedge // 1 clk pulse at falling edge of conditioned -); - - parameter counterwidth = 3; // Counter size, in bits, >= log2(waittime) (maybe this could be 2 since 2^2 > 3) - parameter waittime = 3; // Debounce delay, in clock cycles - - reg[counterwidth-1:0] counter = 0; - reg synchronizer0 = 0; - reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge - -always @(posedge clk ) begin -//$display ("began"); - if(conditioned == synchronizer1) - counter <= 0; - else begin - if( counter == waittime) begin - counter <= 0; - conditioned <= synchronizer1; - if(conditioned == 0 & synchronizer1 ==1) begin - positiveedge <= 1; - $display("positive edge gotten"); - end - if(conditioned == 1 & synchronizer1 ==0) begin - negativeedge <= 1; - $display("negative edge gotten"); - end - end - else - counter <= counter+1; - $display("counter iterated"); - end - - if(positiveedge == 1) - positiveedge <= 0; - if(negativeedge == 1) - negativeedge <= 0; - - synchronizer0 <= noisysignal; // these happen every time there's a + clk edge - synchronizer1 <= synchronizer0; - //positiveedge <= 0; - //negativeedge <= 0; -end - -endmodule - - From 6702a9db001e6e770435995f1887092858b98a40 Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:31:26 -0400 Subject: [PATCH 12/39] Delete inputconditioner.vcd --- inputconditioner.vcd | 448 ------------------------------------------- 1 file changed, 448 deletions(-) delete mode 100644 inputconditioner.vcd diff --git a/inputconditioner.vcd b/inputconditioner.vcd deleted file mode 100644 index 616f665..0000000 --- a/inputconditioner.vcd +++ /dev/null @@ -1,448 +0,0 @@ -$date - Mon Oct 23 19:58:44 2017 -$end -$version - Icarus Verilog -$end -$timescale - 1s -$end -$scope module testConditioner $end -$var wire 1 ! conditioned $end -$var wire 1 " falling $end -$var wire 1 # rising $end -$var reg 1 $ clk $end -$var reg 1 % pin $end -$scope module dut $end -$var wire 1 & clk $end -$var wire 1 ' noisysignal $end -$var reg 1 ( conditioned $end -$var reg 3 ) counter [2:0] $end -$var reg 1 * negativeedge $end -$var reg 1 + positiveedge $end -$var reg 1 , synchronizer0 $end -$var reg 1 - synchronizer1 $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -0- -0, -x+ -x* -b0 ) -x( -0' -0& -0% -0$ -x# -x" -x! -$end -#10 -b1 ) -1$ -1& -#20 -0$ -0& -#30 -b10 ) -1$ -1& -#40 -0$ -0& -#50 -1, -b11 ) -1$ -1& -1% -1' -#60 -0$ -0& -#70 -1- -0( -0! -b0 ) -1$ -1& -#80 -0$ -0& -#90 -b1 ) -1$ -1& -#100 -0$ -0& -#110 -b10 ) -1$ -1& -#120 -0$ -0& -#130 -0, -b11 ) -1$ -1& -0% -0' -#140 -0$ -0& -#142 -1% -1' -#150 -0- -1, -1+ -1# -1( -1! -b0 ) -1$ -1& -#160 -0$ -0& -#170 -1- -0+ -0# -b1 ) -1$ -1& -#180 -0$ -0& -#190 -b0 ) -1$ -1& -#200 -0$ -0& -#210 -1$ -1& -#212 -0% -0' -#220 -0$ -0& -#230 -0, -1$ -1& -#240 -0$ -0& -#250 -0- -1$ -1& -#260 -0$ -0& -#270 -b1 ) -1$ -1& -#280 -0$ -0& -#290 -b10 ) -1$ -1& -#300 -0$ -0& -#302 -1% -1' -#310 -b11 ) -0% -0' -1$ -1& -#320 -0$ -0& -#330 -1* -1" -0( -0! -b0 ) -1$ -1& -#340 -0$ -0& -#350 -0* -0" -1$ -1& -#360 -0$ -0& -#370 -1$ -1& -#380 -0$ -0& -1% -1' -#390 -1, -1$ -1& -#400 -0$ -0& -#410 -1- -1$ -1& -#420 -0$ -0& -#430 -b1 ) -1$ -1& -#440 -0$ -0& -#450 -b10 ) -1$ -1& -#460 -0$ -0& -#470 -b11 ) -1$ -1& -#480 -0$ -0& -#490 -1+ -1# -1( -1! -b0 ) -1$ -1& -#500 -0$ -0& -#510 -0+ -0# -1$ -1& -#520 -0$ -0& -#530 -0, -1$ -1& -0% -0' -#540 -0$ -0& -#550 -0- -1$ -1& -#560 -0$ -0& -#570 -b1 ) -1$ -1& -#580 -0$ -0& -1% -1' -#590 -1, -b10 ) -1$ -1& -#595 -0% -0' -#596 -1% -1' -#600 -0$ -0& -#610 -1- -b11 ) -1$ -1& -#620 -0$ -0& -#630 -b0 ) -1$ -1& -#640 -0$ -0& -#650 -1$ -1& -#660 -0$ -0& -#666 -0% -0' -#670 -0, -1$ -1& -#680 -0$ -0& -#690 -0- -1$ -1& -#700 -0$ -0& -#710 -b1 ) -1$ -1& -#716 -1% -1' -#720 -0$ -0& -#721 -0% -0' -#730 -b10 ) -1$ -1& -#740 -0$ -0& -#750 -b11 ) -1$ -1& -#760 -0$ -0& -#770 -1* -1" -0( -0! -b0 ) -1$ -1& -#780 -0$ -0& -#790 -0* -0" -1$ -1& -#800 -0$ -0& -#810 -1$ -1& -#820 -0$ -0& -#830 -1$ -1& -#840 -0$ -0& -#850 -1$ -1& -#860 -0$ -0& -#870 -1$ -1& -#880 -0$ -0& -#890 -1$ -1& -#900 -0$ -0& -#910 -1$ -1& -#920 -0$ -0& -#930 -1$ -1& -#940 -0$ -0& -#950 -1$ -1& -#960 -0$ -0& -#970 -1$ -1& -#980 -0$ -0& -#990 -1$ -1& -#1000 -0$ -0& -#1001 From ef065f8cb9fb52a884233534ab163bdd3a1f488b Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:31:36 -0400 Subject: [PATCH 13/39] Delete shiftregister.t.v --- shiftregister.t.v | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 shiftregister.t.v diff --git a/shiftregister.t.v b/shiftregister.t.v deleted file mode 100644 index aa531d9..0000000 --- a/shiftregister.t.v +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------ -// Shift Register test bench -//------------------------------------------------------------------------ - -`include "shiftregister.v" - -module testshiftregister(); - - reg clk; - reg peripheralClkEdge; - reg parallelLoad; - wire[7:0] parallelDataOut; - wire serialDataOut; - reg[7:0] parallelDataIn; - reg serialDataIn; - - // Instantiate with parameter width = 8 - shiftregister #(8) dut(.clk(clk), - .peripheralClkEdge(peripheralClkEdge), - .parallelLoad(parallelLoad), - .parallelDataIn(parallelDataIn), - .serialDataIn(serialDataIn), - .parallelDataOut(parallelDataOut), - .serialDataOut(serialDataOut)); - - - initial clk=0; - always #10 clk=!clk; // 50MHz Clock - - initial begin - // Your Test Code - end - -endmodule - From 33aa4cbfdba351dc2826f2a4009e40e033bca025 Mon Sep 17 00:00:00 2001 From: Logan Sweet Date: Mon, 23 Oct 2017 22:31:44 -0400 Subject: [PATCH 14/39] Delete shiftregister.v --- shiftregister.v | 62 ------------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 shiftregister.v diff --git a/shiftregister.v b/shiftregister.v deleted file mode 100644 index 207273f..0000000 --- a/shiftregister.v +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------ -// Shift Register -// Parameterized width (in bits) -// Shift register can operate in two modes: -// - serial in, parallel out -// - parallel in, serial out -//------------------------------------------------------------------------ - -module shiftregister -#(parameter width = 8) -( -input clk, // FPGA Clock -input peripheralClkEdge, // Edge indicator -input parallelLoad, // 1 = Load shift reg with parallelDataIn -input [width-1:0] parallelDataIn, // Load shift reg in parallel -input serialDataIn, // Load shift reg serially -output [width-1:0] parallelDataOut, // Shift reg data contents -output serialDataOut // Positive edge synchronized -); - -reg [width-1:0] shiftregistermem; - -// general thoughts: make a loop that happens width # of times, -// and then use the idea behind the behavioral flip flop below -// so that you can pass things along as needed. - -// confusion points: I don't know what the peripheral clock edge does. -// The assignement says that the bits advance when the periperal clock -// has an edge, but I don't know why you don't use the normal clock? - -// from the assignment: -// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. -// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " - -always @(posedge clk) begin - peripheralCLkEdge <= clk; - -end - -always @(posedge periperalClkEdge) - -end - - - -endmodule - - - -module flipflop -( -output reg q, -input d, -input wrenable, -input clk -); - always @(posedge clk) begin - if(wrenable) begin - q = d; - end - end -endmodule From a6f6d64e4b8f62840644f087c4bd4e98a4b058ab Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Mon, 23 Oct 2017 22:35:40 -0400 Subject: [PATCH 15/39] wow Maggie and I really need to learn to git --- Maggie and Logan Work Plan | 21 ++++ README.md | 221 +++++++++++++++++++++++++++++++++++++ datamemory.v | 31 ++++++ inputconditioner.t.v | 49 ++++++++ inputconditioner.v | 60 ++++++++++ shiftregister.t.v | 35 ++++++ shiftregister.v | 57 ++++++++++ spimemory.v | 17 +++ 8 files changed, 491 insertions(+) create mode 100644 Maggie and Logan Work Plan create mode 100644 README.md create mode 100644 datamemory.v create mode 100644 inputconditioner.t.v create mode 100644 inputconditioner.v create mode 100644 shiftregister.t.v create mode 100644 shiftregister.v create mode 100644 spimemory.v diff --git a/Maggie and Logan Work Plan b/Maggie and Logan Work Plan new file mode 100644 index 0000000..061d559 --- /dev/null +++ b/Maggie and Logan Work Plan @@ -0,0 +1,21 @@ +CompArch Lab 2 Work Plan +Logan and Maggie +10/20/17 + +Understand what SPI memory is. Time: 1 hours. Due:10/22 +Create input conditioner. Time: 1 hour. Due: End of day, 10/22 +Write test bench for input conditioner. Time: 1 hour. Due: End of day, 10/23 +Create shift register. Time: 3 hours. Due: 9 pm, 10/24 +Write test bench for input conditioner. Time: 2 hours. Due: 10 pm, 10/24 +Load input conditioner & shift register onto FPGA. Time: 2 hours. Due: End of day, October 24 +Write complete test bench for what we have so far Time: 1 hours Due: End of day, October 25 +Midpoint Deliverable writeup Time: 2 hours Due: End of day October 25 +Read about FSM & Maggie double checks her understanding of things. Time: 1 hour. Due: 10/24 +Create drawing of FSM Time: 0.5 hours Due: End of day October 24 +Check FSM with an instructor Time: 0.5 hours Due: End of day October 24 +Code FSM Time: 2 hours Due: End of day October 25 +Finish SPI module Time: 5 hours Due: End of day October 28 +Write and evaluate testbench Time: 3 hours Due: End of day October 30 +Write report Time: 2 hours Due: End of day November 1 + +Total time: 27 hours diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b93257 --- /dev/null +++ b/README.md @@ -0,0 +1,221 @@ +# CompArch Lab 2: SPI Memory + +**Work Plan due:** Monday, October 23 + +**Midpoint Check In due:** Wednesday, October 25 + +**Lab due:** Thursday, November 2 + +In this lab you will create an [SPI](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) Memory and instantiate it on FPGA. You will also create an automated test harness and use it to verify your memory (and possibly the memories of the other groups in the class). + +System Diagram + +You will work in groups of ~3. You may shuffle teams from previous labs if you so choose. + +## Work Plan ## + +Draft a work plan for this lab. Break down the lab in to small portions, and for each portion predict how long it will take (in hours) and when it will be done by (date). Use your work plan reflection from Lab 1 to help with this task. + +**Note:** If you think you will need an extension for this lab (e.g. due to approved travel), the work plan is the time to ask for it. + +**Submit this plan by the end of the day Monday, October 23** by pushing `work_plan.txt` to GitHub (no pull request needed). Markdown/PDF format also OK. + +## Input Conditioning ## + +The Input Conditioning subcircuit serves three purposes: + +1. **Input Synchronization**: The pair of D flip-flops at the front of this unit synchronize the external signal to the internal clock domain. The setup and hold requirements of the first flip-flop will likely be violated – its input can occur at any phase offset with respect to the internal oscillator. The second flip-flop takes the partially synchronized signal and brings it fully into phase with the internal domain. + +1. **Input Debouncing**: Buttons and Switches are notoriously noisy, and may be unstable for several milliseconds after a transition due to mechanical oscillations. Purely electrical signal sources may also show similar (but much less severe) oscillations due to noise and signal reflections. This circuit cleans up that oscillation by waiting for it to stabilize. + +1. **Edge Detection**: These signals are asserted for a single clock cycle on each positive and negative edge of the external signal. These are used by other subcircuits to emulate `@(posedge ___)` type behaviors without creating extra clock domains. + +Glitch Suppression and Edge Detection + +_Glitch Suppression and Edge Detection_ + +Start with the behavioral Verilog module provided in `inputconditioner.v`. + +Input conditioner box diagram + +Modify the module so that the `positiveedge` and `negativeedge` output signals are correctly generated. These signals should be high for exactly one clock period when `conditioned` has a positive/negative edge, starting in the same clock period that `conditioned` transitions. + +Note: There are several possible ways to generate the edge signals. Remember that `assign` statements are continuous and operate on `wire`s, while assignments in `always` blocks (e.g. nonblocking `<=`) operate on `reg`s. + +### Input Conditioner Deliverables ### + - Complete module in `inputconditioner.v` + - Your test bench `inputconditioner.t.v` demonstrates the three input conditioner functions (i.e. synchronization, debouncing, edge detection) + - Test script that executes the test bench and generates wave forms showing the correct operation of your input conditioner. Include images of these waveform(s) in your final report. + - In your final report, include a circuit diagram of the structural circuit for the input conditioner. This should be drawn from primitives such as D flip-flops, adders, muxes, and basic gates. + - If the main system clock is running at 50MHz, what is the maximum length input glitch that will be suppressed by this design for a `waittime` of 10? Include the analysis in your report. + +## Shift Register ## +Create a shift register supporting both "Serial In, Parallel Out" and "Parallel In, Serial Out" modes of operation. It should have the following module definition: + +```verilog +module shiftregister +#(parameter width = 8) +( +input clk, // FPGA Clock +input peripheralClkEdge, // Edge indicator +input parallelLoad, // 1 = Load shift reg with parallelDataIn +input [width-1:0] parallelDataIn, // Load shift reg in parallel +input serialDataIn, // Load shift reg serially +output [width-1:0] parallelDataOut, // Shift reg data contents +output serialDataOut // Positive edge synchronized +); +``` + +The shift register is clocked by the main system oscillator `clk` running at 50MHz. All behaviors are synchronous to this clock: + +1. When the peripheral clock `peripheralClkEdge` has an edge, the shift register advances one position: `serialDataIn` is loaded into the LSB (Least Significant Bit), and the rest of the bits shift up by one. This uses the Input Conditioner's edge detection capabilities. +1. When `parallelLoad` is asserted, the shift register will take the value of `parallelDataIn`. +1. `serialDataOut` always presents the Most Significant Bit of the shift register. +1. `parallelDataOut` always presents the entirety of the contents of the shift register. + +Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. You may want to look at Verilog's `{}` concatenate syntax for implementing the serial behavior. + +It is good design practice to decide which behavior will "win" if a parallel load and a serial shift happen in the same clock edge. Otherwise the synthesizer will make that decision for you (likely without a warning). + +### Shift Register Deliverables ### + - Complete module in `shiftregister.v` + - Your test bench in `shiftregister.t.v` demonstrating both modes of operation for the shift register. + - In your final report, you should describe your test bench strategy. + + +## Midpoint Check In ## + +Create a top-level module with the following structure and load it onto the FPGA: + +Midpoint Check In Structure + +The parallel data input of the shift register is tied to a constant value, and the load is triggered when button 0 is pressed. + +Switches 0 and 1 allow manual control of the serial input. + +LEDs show the state of the shift register (note: you only have 4 to work with, so you will have to show a subset of bits, use the Lab 0 trick, or borrow an external LED board) + +### Loading to FPGA ### +Load the shift register and the input conditioners onto the Zybo board, following the same procedure as for Lab0. + +### Midpoint Deliverables ### + +Push the module described above to GitHub as `midpoint.v`. Because testing will be done by hand, no Verilog test bench is required for this file. + +Design a test sequence that demonstrates successful operation of this portion of the lab. Provide a short written description of what the test engineer is to do, and what the state of the LEDs should be at each step. + +Demonstrate your test to a NINJA, or record a short video/gif of the execution and submit the link (please don't push huge videos to GitHub. + +**Midpoint Check In must be completed by Wedneday, October 25** + + +## SPI Memory ## + +You now have everything you need to create a complete SPI memory. We will make it 128 bytes in size. It will have the following module definition: + +```verilog +module spiMemory +( + input clk, // FPGA clock + input sclk_pin, // SPI clock + input cs_pin, // SPI chip select + output miso_pin, // SPI master in slave out + input mosi_pin, // SPI master out slave in + output [3:0] leds // LEDs for debugging +) +``` + +The `SCLK`, `CS`, `MISO`, and `MOSI` signals obey the SPI standard. The LED outputs are in case you need debugging information. + +### Behavior ### + +Each transaction begins with the Chip Select `CS` line being asserted `low`. Whenever `CS` is `high`, the memory ignores all other inputs, tri-states `MISO`, and resets any communication state machines. + +Next, 8 bits are clocked in by the Master. The first 7 bits are the memory address, Most Significant Bit first. The 8th bit is the `R/~W` flag: Read when high, Write when low. + +For a `Write` operation, the master will then clock in 8 bits of data and de-assert `CS`. + +For a `Read` operation, the slave will assert `MISO` and clock out the data found at `address`. + +Data is always presented on the falling edge, and always read on the rising edge of `SCLK`. + +#### Write operation #### + +Write operation timing diagram + +#### Read operation #### + +Read operation timing diagram + +### Schematic ### + +SPI memory schematic + +This is a _recommended_ schematic for the SPI Memory. You may implement your design however you prefer, as long as it meets the specification shown in the waveforms above. The Serial Out pin is synchronized to the falling edge of `SCLK` to obey the standard we are using (Data is presented on the falling edge, and captured on the rising edge).  + +### Finite State Machine ### + +The schematic above uses a finite state machine to provide the appropriate control signals at the right times, and you will likely want to do the same. Begin by drawing the states and transitions of your controller during both read and write operations on paper. Next construct a table describing what all the control signals should be in each state, and then implement and test your FSM. We strongly suggest that you show your paper design to an instructor to get feedback first. + + +## SPI Memory Testing ## + + +### Test Strategy ### +Your final report should include a detailed analysis of your testing strategy. Why did you choose the test sequences you did? + +### External testing (optional) ### + +You may also route your SPI port to the pins of the FPGA, and test it with an external device (such as an Arduino). Talk to the NINJAs if you're interested in this approach. + + +## Final submission ## + +Compile a report (PDF or Markdown) with all the information requested above, plus a short reflection/analysis of your work plan compared to reality. Push the report along with all your Verilog modules, testbenches, and scripts to GitHub and submit a pull request. + + +## Notes/Hints ## + +### Input Conditioning ### + +You may need to adjust your deglitching wait period differently for when it is driven by switches vs when it is driven by the tester. Switches are much noisier. + +### Autograde Etiquette ## + +The autograder will compile all Verilog files that are in your repository. This means that things like `InputConditioner_OLD.v` may cause naming conflicts if they have the same modules inside. Make sure that you do not have multiple modules with the same name. + + +### FPGA Synthesis Preparation ### + +Make sure that each of your always blocks' sensitivity lists are only `always @(posedge clk)`. Other sensitivity lists may cause clock gating. + +The Xilinx synthesizer obeys the `initial` block syntax with varying degrees of success. To initialize a register, do so in its declaration: `reg regname = 0;`. This technique does not work with 2 dimensional arrays. + +### FSM Debugging ### +Icarus doesn’t have enumeration support. To make your debugging life a little easier, you can define your state machine states with parameters. Using parameters local to the module that uses the states keeps your name space a little cleaner. + +```verilog +parameter state_GETTING_ADDRESS = 0; +parameter state_GOT_ADDRESS = 1; +parameter state_READ_1 = 2; +parameter state_READ_2 = 3; +``` + +You can also use translate filters in GTKWave to translate from the signal values back into meaningful names. For example, say you have the following trace: + +Default GTKWave trace + +If you write a filter file like the one below, you can highlight the signals of interest and select `Data Format > Translate Filter File` to show the human-readable aliases instead. + +``` +# Example filter file +# Each line has a value (which much match what is in the wave viewer exactly) and a string alias to replace the value if found +00 Zero +01 First +03 Third +``` +GTKWave trace with aliases + +More information about GTKWave filtering can be found in the [GTKWave User's Guide (PDF)](http://gtkwave.sourceforge.net/gtkwave.pdf). + +You will need to keep the parameters and filter file synchronized by hand. diff --git a/datamemory.v b/datamemory.v new file mode 100644 index 0000000..0d82131 --- /dev/null +++ b/datamemory.v @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------ +// Data Memory +// Positive edge triggered +// dataOut always has the value mem[address] +// If writeEnable is true, writes dataIn to mem[address] +//------------------------------------------------------------------------ + +module datamemory +#( + parameter addresswidth = 7, + parameter depth = 2**addresswidth, + parameter width = 8 +) +( + input clk, + output reg [width-1:0] dataOut, + input [addresswidth-1:0] address, + input writeEnable, + input [width-1:0] dataIn +) + + + reg [width-1:0] memory [depth-1:0]; + + always @(posedge clk) begin + if(writeEnable) + memory[address] <= dataIn; + dataOut <= memory[address]; + end + +endmodule diff --git a/inputconditioner.t.v b/inputconditioner.t.v new file mode 100644 index 0000000..66d03d9 --- /dev/null +++ b/inputconditioner.t.v @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------ +// Input Conditioner test bench +//------------------------------------------------------------------------ +`include "inputconditioner.v" + +module testConditioner(); + + + reg clk; + reg pin; + wire conditioned; + wire rising; + wire falling; + + inputconditioner dut(.clk(clk), + .noisysignal(pin), + .conditioned(conditioned), + .positiveedge(rising), + .negativeedge(falling)); + + initial clk=0; + always #10 clk=!clk; // 50MHz Clock + initial begin + +$dumpfile("inputconditioner.vcd"); +$dumpvars(); + +$display(" clk | pin | conditioned | -edge| + edge"); +pin = 0; #400 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #2 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #300 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #3 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 0; #100 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); +pin = 1; #200 +$display("%b | %b | %b | %b | %b", clk, pin, conditioned, rising, falling ); + +$finish; +end + +endmodule diff --git a/inputconditioner.v b/inputconditioner.v new file mode 100644 index 0000000..280ff98 --- /dev/null +++ b/inputconditioner.v @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------ +// Input Conditioner +// 1) Synchronizes input to clock domain +// 2) Debounces input +// 3) Creates pulses at edge transitions +//------------------------------------------------------------------------ +// 50 MHz is 2 * 1-^-8 seconds per cycle + +module inputconditioner +( +input clk, // Clock domain to synchronize input to +input noisysignal, // (Potentially) noisy input signal +output reg conditioned, // Conditioned output signal +output reg positiveedge, // 1 clk pulse at rising edge of conditioned +output reg negativeedge // 1 clk pulse at falling edge of conditioned +); + + parameter counterwidth = 3; // Counter size, in bits, >= log2(waittime) (maybe this could be 2 since 2^2 > 3) + parameter waittime = 3; // Debounce delay, in clock cycles + + reg[counterwidth-1:0] counter = 0; + reg synchronizer0 = 0; + reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge + +always @(posedge clk ) begin +//$display ("began"); + if(conditioned == synchronizer1) + counter <= 0; + else begin + if( counter == waittime) begin + counter <= 0; + conditioned <= synchronizer1; + if(conditioned == 0 & synchronizer1 ==1) begin + positiveedge <= 1; + $display("positive edge gotten"); + end + if(conditioned == 1 & synchronizer1 ==0) begin + negativeedge <= 1; + $display("negative edge gotten"); + end + end + else + counter <= counter+1; + $display("counter iterated"); + end + + if(positiveedge == 1) + positiveedge <= 0; + if(negativeedge == 1) + negativeedge <= 0; + + synchronizer0 <= noisysignal; // these happen every time there's a + clk edge + synchronizer1 <= synchronizer0; + //positiveedge <= 0; + //negativeedge <= 0; +end + +endmodule + + diff --git a/shiftregister.t.v b/shiftregister.t.v new file mode 100644 index 0000000..aa531d9 --- /dev/null +++ b/shiftregister.t.v @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------ +// Shift Register test bench +//------------------------------------------------------------------------ + +`include "shiftregister.v" + +module testshiftregister(); + + reg clk; + reg peripheralClkEdge; + reg parallelLoad; + wire[7:0] parallelDataOut; + wire serialDataOut; + reg[7:0] parallelDataIn; + reg serialDataIn; + + // Instantiate with parameter width = 8 + shiftregister #(8) dut(.clk(clk), + .peripheralClkEdge(peripheralClkEdge), + .parallelLoad(parallelLoad), + .parallelDataIn(parallelDataIn), + .serialDataIn(serialDataIn), + .parallelDataOut(parallelDataOut), + .serialDataOut(serialDataOut)); + + + initial clk=0; + always #10 clk=!clk; // 50MHz Clock + + initial begin + // Your Test Code + end + +endmodule + diff --git a/shiftregister.v b/shiftregister.v new file mode 100644 index 0000000..c9af668 --- /dev/null +++ b/shiftregister.v @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------ +// Shift Register +// Parameterized width (in bits) +// Shift register can operate in two modes: +// - serial in, parallel out +// - parallel in, serial out +//------------------------------------------------------------------------ + +module shiftregister +#(parameter width = 8) +( +input clk, // FPGA Clock +input peripheralClkEdge, // Edge indicator +input parallelLoad, // 1 = Load shift reg with parallelDataIn +input [width-1:0] parallelDataIn, // Load shift reg in parallel +input serialDataIn, // Load shift reg serially +output [width-1:0] parallelDataOut, // Shift reg data contents +output serialDataOut // Positive edge synchronized +); + +reg [width-1:0] shiftregistermem; + +// general thoughts: make a loop that happens width # of times, +// and then use the idea behind the behavioral flip flop below +// so that you can pass things along as needed. + +// from the assignment: +// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. +// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " + +always @(posedge clk) begin + // Your Code Here +end + +always @(posedge periperalClkEdge) + +end + + + +endmodule + + + +module flipflop +( +output reg q, +input d, +input wrenable, +input clk +); + always @(posedge clk) begin + if(wrenable) begin + q = d; + end + end +endmodule diff --git a/spimemory.v b/spimemory.v new file mode 100644 index 0000000..c6ed4f7 --- /dev/null +++ b/spimemory.v @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------ +// SPI Memory +//------------------------------------------------------------------------ + +module spiMemory +( + input clk, // FPGA clock + input sclk_pin, // SPI clock + input cs_pin, // SPI chip select + output miso_pin, // SPI master in slave out + input mosi_pin, // SPI master out slave in + output [3:0] leds // LEDs for debugging +) + + +endmodule + From 9c03c63421fa7fcfa5af9fc697726cd4f6854470 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Mon, 23 Oct 2017 23:11:05 -0400 Subject: [PATCH 16/39] cleaned up inputconditioned code for readbility --- inputconditioner.v | 55 +++-- inputconditioner.vcd | 465 +++++++++++++++++++++++++++++++++++++++++++ shiftregister.v | 32 ++- test | 169 ++++++++++++++++ 4 files changed, 680 insertions(+), 41 deletions(-) create mode 100644 inputconditioner.vcd create mode 100755 test diff --git a/inputconditioner.v b/inputconditioner.v index 280ff98..8d46e68 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -20,39 +20,34 @@ output reg negativeedge // 1 clk pulse at falling edge of conditioned reg[counterwidth-1:0] counter = 0; reg synchronizer0 = 0; - reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge + reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge always @(posedge clk ) begin //$display ("began"); - if(conditioned == synchronizer1) - counter <= 0; - else begin - if( counter == waittime) begin - counter <= 0; - conditioned <= synchronizer1; - if(conditioned == 0 & synchronizer1 ==1) begin - positiveedge <= 1; - $display("positive edge gotten"); - end - if(conditioned == 1 & synchronizer1 ==0) begin - negativeedge <= 1; - $display("negative edge gotten"); - end - end - else - counter <= counter+1; - $display("counter iterated"); - end - - if(positiveedge == 1) - positiveedge <= 0; - if(negativeedge == 1) - negativeedge <= 0; - - synchronizer0 <= noisysignal; // these happen every time there's a + clk edge - synchronizer1 <= synchronizer0; - //positiveedge <= 0; - //negativeedge <= 0; + +if(conditioned == synchronizer1) + counter <= 0; +else begin + if(counter == waittime) begin + counter <= 0; + conditioned <= synchronizer1; + if(conditioned == 0 & synchronizer1 ==1) + positiveedge <= 1; + if(conditioned == 1 & synchronizer1 ==0) + negativeedge <= 1; + end + else + counter <= counter+1; +end // end to the else begin statement + +if(positiveedge == 1) + positiveedge <= 0; +if(negativeedge == 1) + negativeedge <= 0; + +synchronizer0 <= noisysignal; // these happen every time there's a clk edge +synchronizer1 <= synchronizer0; + end endmodule diff --git a/inputconditioner.vcd b/inputconditioner.vcd new file mode 100644 index 0000000..35fb26c --- /dev/null +++ b/inputconditioner.vcd @@ -0,0 +1,465 @@ +$date + Mon Oct 23 23:09:35 2017 +$end +$version + Icarus Verilog +$end +$timescale + 1s +$end +$scope module testConditioner $end +$var wire 1 ! conditioned $end +$var wire 1 " falling $end +$var wire 1 # rising $end +$var reg 1 $ clk $end +$var reg 1 % pin $end +$scope module dut $end +$var wire 1 & clk $end +$var wire 1 ' noisysignal $end +$var reg 1 ( conditioned $end +$var reg 3 ) counter [2:0] $end +$var reg 1 * negativeedge $end +$var reg 1 + positiveedge $end +$var reg 1 , synchronizer0 $end +$var reg 1 - synchronizer1 $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +0- +0, +x+ +x* +b0 ) +x( +0' +0& +0% +0$ +x# +x" +x! +$end +#10 +b1 ) +1$ +1& +#20 +0$ +0& +#30 +b10 ) +1$ +1& +#40 +0$ +0& +#50 +b11 ) +1$ +1& +#60 +0$ +0& +#70 +0( +0! +b0 ) +1$ +1& +#80 +0$ +0& +#90 +1$ +1& +#100 +0$ +0& +#110 +1$ +1& +#120 +0$ +0& +#130 +1$ +1& +#140 +0$ +0& +#150 +1$ +1& +#160 +0$ +0& +#170 +1$ +1& +#180 +0$ +0& +#190 +1$ +1& +#200 +0$ +0& +#210 +1$ +1& +#220 +0$ +0& +#230 +1$ +1& +#240 +0$ +0& +#250 +1$ +1& +#260 +0$ +0& +#270 +1$ +1& +#280 +0$ +0& +#290 +1$ +1& +#300 +0$ +0& +#310 +1$ +1& +#320 +0$ +0& +#330 +1$ +1& +#340 +0$ +0& +#350 +1$ +1& +#360 +0$ +0& +#370 +1$ +1& +#380 +0$ +0& +#390 +1$ +1& +#400 +0$ +0& +1% +1' +#410 +1, +1$ +1& +#420 +0$ +0& +#430 +1- +1$ +1& +#440 +0$ +0& +#450 +b1 ) +1$ +1& +#460 +0$ +0& +#470 +b10 ) +1$ +1& +#480 +0$ +0& +#490 +b11 ) +1$ +1& +#500 +0$ +0& +0% +0' +#502 +1% +1' +#510 +1+ +1# +1( +1! +b0 ) +1$ +1& +#520 +0$ +0& +#530 +0+ +0# +1$ +1& +#540 +0$ +0& +#550 +1$ +1& +#560 +0$ +0& +#570 +1$ +1& +#580 +0$ +0& +#590 +1$ +1& +#600 +0$ +0& +#602 +0% +0' +#610 +0, +1$ +1& +#620 +0$ +0& +#630 +0- +1$ +1& +#640 +0$ +0& +#650 +b1 ) +1$ +1& +#660 +0$ +0& +#670 +b10 ) +1$ +1& +#680 +0$ +0& +#690 +b11 ) +1$ +1& +#700 +0$ +0& +#710 +1* +1" +0( +0! +b0 ) +1$ +1& +#720 +0$ +0& +#730 +0* +0" +1$ +1& +#740 +0$ +0& +#750 +1$ +1& +#760 +0$ +0& +#770 +1$ +1& +#780 +0$ +0& +#790 +1$ +1& +#800 +0$ +0& +#810 +1$ +1& +#820 +0$ +0& +#830 +1$ +1& +#840 +0$ +0& +#850 +1$ +1& +#860 +0$ +0& +#870 +1$ +1& +#880 +0$ +0& +#890 +1$ +1& +#900 +0$ +0& +#902 +1% +1' +#905 +0% +0' +#910 +1$ +1& +#920 +0$ +0& +#930 +1$ +1& +#940 +0$ +0& +#950 +1$ +1& +#960 +0$ +0& +#970 +1$ +1& +#980 +0$ +0& +#990 +1$ +1& +#1000 +0$ +0& +#1005 +1% +1' +#1010 +1, +1$ +1& +#1020 +0$ +0& +#1030 +1- +1$ +1& +#1040 +0$ +0& +#1050 +b1 ) +1$ +1& +#1060 +0$ +0& +#1070 +b10 ) +1$ +1& +#1080 +0$ +0& +#1090 +b11 ) +1$ +1& +#1100 +0$ +0& +#1110 +1+ +1# +1( +1! +b0 ) +1$ +1& +#1120 +0$ +0& +#1130 +0+ +0# +1$ +1& +#1140 +0$ +0& +#1150 +1$ +1& +#1160 +0$ +0& +#1170 +1$ +1& +#1180 +0$ +0& +#1190 +1$ +1& +#1200 +0$ +0& +#1205 diff --git a/shiftregister.v b/shiftregister.v index c9af668..1bf2934 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -20,25 +20,35 @@ output serialDataOut // Positive edge synchronized reg [width-1:0] shiftregistermem; -// general thoughts: make a loop that happens width # of times, -// and then use the idea behind the behavioral flip flop below -// so that you can pass things along as needed. - -// from the assignment: -// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. -// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " - always @(posedge clk) begin - // Your Code Here + +if(parallelLoad ==1) begin // do thisfor parallel data in + serialDataOut <= parallelDataIn[8]; + serialDataOut <= parallelDataIn[7]; + serialDataOut <= parallelDataIn[6]; + serialDataOut <= parallelDataIn[5]; + serialDataOut <= parallelDataIn[4]; + serialDataOut <= parallelDataIn[3]; + serialDataOut <= parallelDataIn[2]; + serialDataOut <= parallelDataIn[1]; + serialDataOut <= parallelDataIn[0]; end -always @(posedge periperalClkEdge) +else begin // do this for serial data in + // serial stuff goes here +end end +endmodule +// general thoughts: make a loop that happens width # of times, +// and then use the idea behind the behavioral flip flop below +// so that you can pass things along as needed. -endmodule +// from the assignment: +// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. +// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " diff --git a/test b/test new file mode 100755 index 0000000..77e3314 --- /dev/null +++ b/test @@ -0,0 +1,169 @@ +#! /usr/bin/vvp +:ivl_version "0.9.7 " "(v0_9_7)"; +:vpi_time_precision + 0; +:vpi_module "system"; +:vpi_module "v2005_math"; +:vpi_module "va_math"; +S_0x21b1730 .scope module, "testConditioner" "testConditioner" 2 6; + .timescale 0 0; +v0x2200780_0 .var "clk", 0 0; +v0x2200820_0 .net "conditioned", 0 0, v0x2200280_0; 1 drivers +v0x22008d0_0 .net "falling", 0 0, v0x22003c0_0; 1 drivers +v0x2200980_0 .var "pin", 0 0; +v0x2200a60_0 .net "rising", 0 0, v0x2200510_0; 1 drivers +S_0x21b1820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x21b1730; + .timescale 0 0; +P_0x21b23c8 .param/l "counterwidth" 3 18, +C4<011>; +P_0x21b23f0 .param/l "waittime" 3 19, +C4<011>; +v0x21b22c0_0 .net "clk", 0 0, v0x2200780_0; 1 drivers +v0x2200280_0 .var "conditioned", 0 0; +v0x2200320_0 .var "counter", 2 0; +v0x22003c0_0 .var "negativeedge", 0 0; +v0x2200470_0 .net "noisysignal", 0 0, v0x2200980_0; 1 drivers +v0x2200510_0 .var "positiveedge", 0 0; +v0x22005f0_0 .var "synchronizer0", 0 0; +v0x2200690_0 .var "synchronizer1", 0 0; +E_0x21ed440 .event posedge, v0x21b22c0_0; + .scope S_0x21b1820; +T_0 ; + %set/v v0x2200320_0, 0, 3; + %end; + .thread T_0; + .scope S_0x21b1820; +T_1 ; + %set/v v0x22005f0_0, 0, 1; + %end; + .thread T_1; + .scope S_0x21b1820; +T_2 ; + %set/v v0x2200690_0, 0, 1; + %end; + .thread T_2; + .scope S_0x21b1820; +T_3 ; + %wait E_0x21ed440; + %load/v 8, v0x2200280_0, 1; + %load/v 9, v0x2200690_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_3.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x2200320_0, 0, 0; + %jmp T_3.1; +T_3.0 ; + %load/v 8, v0x2200320_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_3.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x2200320_0, 0, 0; + %load/v 8, v0x2200690_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x2200280_0, 0, 8; + %load/v 8, v0x2200280_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x2200690_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x2200510_0, 0, 1; +T_3.4 ; + %load/v 8, v0x2200280_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x2200690_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_3.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x22003c0_0, 0, 1; +T_3.6 ; + %jmp T_3.3; +T_3.2 ; + %load/v 8, v0x2200320_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x2200320_0, 0, 8; +T_3.3 ; +T_3.1 ; + %load/v 8, v0x2200510_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_3.8, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x2200510_0, 0, 0; +T_3.8 ; + %load/v 8, v0x22003c0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_3.10, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x22003c0_0, 0, 0; +T_3.10 ; + %load/v 8, v0x2200470_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x22005f0_0, 0, 8; + %load/v 8, v0x22005f0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x2200690_0, 0, 8; + %jmp T_3; + .thread T_3; + .scope S_0x21b1730; +T_4 ; + %set/v v0x2200780_0, 0, 1; + %end; + .thread T_4; + .scope S_0x21b1730; +T_5 ; + %delay 10, 0; + %load/v 8, v0x2200780_0, 1; + %inv 8, 1; + %set/v v0x2200780_0, 8, 1; + %jmp T_5; + .thread T_5; + .scope S_0x21b1730; +T_6 ; + %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; + %vpi_call 2 26 "$dumpvars"; + %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; + %set/v v0x2200980_0, 0, 1; + %delay 400, 0; + %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 1, 1; + %delay 100, 0; + %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 0, 1; + %delay 2, 0; + %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 1, 1; + %delay 100, 0; + %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 0, 1; + %delay 300, 0; + %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 1, 1; + %delay 3, 0; + %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 0, 1; + %delay 100, 0; + %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %set/v v0x2200980_0, 1, 1; + %delay 200, 0; + %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; + %vpi_call 2 46 "$finish"; + %end; + .thread T_6; +# The file index is used to find the file name in the following table. +:file_names 4; + "N/A"; + ""; + "inputconditioner.t.v"; + "./inputconditioner.v"; From c66f0607a7b9ba312997cf665b0e46acfd7507e5 Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Mon, 23 Oct 2017 23:32:02 -0400 Subject: [PATCH 17/39] minior formatting --- inputconditioner.t.v | 1 - inputconditioner.v | 3 --- 2 files changed, 4 deletions(-) diff --git a/inputconditioner.t.v b/inputconditioner.t.v index 66d03d9..2f63647 100644 --- a/inputconditioner.t.v +++ b/inputconditioner.t.v @@ -5,7 +5,6 @@ module testConditioner(); - reg clk; reg pin; wire conditioned; diff --git a/inputconditioner.v b/inputconditioner.v index 8d46e68..7940cce 100644 --- a/inputconditioner.v +++ b/inputconditioner.v @@ -23,7 +23,6 @@ output reg negativeedge // 1 clk pulse at falling edge of conditioned reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge always @(posedge clk ) begin -//$display ("began"); if(conditioned == synchronizer1) counter <= 0; @@ -47,9 +46,7 @@ if(negativeedge == 1) synchronizer0 <= noisysignal; // these happen every time there's a clk edge synchronizer1 <= synchronizer0; - end endmodule - From 051f03189574eb14431879137ed616d35e8d92ec Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Tue, 24 Oct 2017 08:57:17 -0400 Subject: [PATCH 18/39] messed with shift register, still confused --- inputconditioner.vcd | 2 +- shiftregister.t.v | 19 +++- shiftregister.v | 22 ++--- test | 216 +++++++++++++++---------------------------- 4 files changed, 98 insertions(+), 161 deletions(-) diff --git a/inputconditioner.vcd b/inputconditioner.vcd index 35fb26c..b1b2074 100644 --- a/inputconditioner.vcd +++ b/inputconditioner.vcd @@ -1,5 +1,5 @@ $date - Mon Oct 23 23:09:35 2017 + Tue Oct 24 08:50:38 2017 $end $version Icarus Verilog diff --git a/shiftregister.t.v b/shiftregister.t.v index aa531d9..324528b 100644 --- a/shiftregister.t.v +++ b/shiftregister.t.v @@ -24,12 +24,21 @@ module testshiftregister(); .serialDataOut(serialDataOut)); - initial clk=0; - always #10 clk=!clk; // 50MHz Clock +initial clk=0; +always #10 clk=!clk; // 50MHz Clock - initial begin - // Your Test Code - end +initial begin + +$dumpfile("shift.vcd"); +$dumpvars(); + +$display(" test stuff here "); +parallelLoad = 1; parallelDataIn = 00001110; #400 +$display("%b | %b | %b | %b ", clk, parallelLoad, parallelDataIn, serialDataOut ); + + + +end endmodule diff --git a/shiftregister.v b/shiftregister.v index 1bf2934..96d133b 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -18,20 +18,20 @@ output [width-1:0] parallelDataOut, // Shift reg data contents output serialDataOut // Positive edge synchronized ); -reg [width-1:0] shiftregistermem; +reg [width-1:0] shiftregistermem; always @(posedge clk) begin -if(parallelLoad ==1) begin // do thisfor parallel data in - serialDataOut <= parallelDataIn[8]; - serialDataOut <= parallelDataIn[7]; - serialDataOut <= parallelDataIn[6]; - serialDataOut <= parallelDataIn[5]; - serialDataOut <= parallelDataIn[4]; - serialDataOut <= parallelDataIn[3]; - serialDataOut <= parallelDataIn[2]; - serialDataOut <= parallelDataIn[1]; - serialDataOut <= parallelDataIn[0]; +if(parallelLoad == 1) begin // do thisfor parallel data in + shiftregistermem[1] <= parallelDataIn[1]; +// shiftregistermem[2] <= parallelDataIn[1]; +// parallelDataIn[3] <= parallelDataIn[2]; +// parallelDataIn[4] <= parallelDataIn[3]; +// parallelDataIn[5] <= parallelDataIn[4]; +// parallelDataIn[6] <= parallelDataIn[5]; +// parallelDataIn[7] <= parallelDataIn[6]; +// serialDataOut <= parallelDataIn[7]; + end else begin // do this for serial data in diff --git a/test b/test index 77e3314..c75637c 100755 --- a/test +++ b/test @@ -4,166 +4,94 @@ :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; -S_0x21b1730 .scope module, "testConditioner" "testConditioner" 2 6; +S_0xe05c80 .scope module, "flipflop" "flipflop" 2 55; .timescale 0 0; -v0x2200780_0 .var "clk", 0 0; -v0x2200820_0 .net "conditioned", 0 0, v0x2200280_0; 1 drivers -v0x22008d0_0 .net "falling", 0 0, v0x22003c0_0; 1 drivers -v0x2200980_0 .var "pin", 0 0; -v0x2200a60_0 .net "rising", 0 0, v0x2200510_0; 1 drivers -S_0x21b1820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x21b1730; +v0xe04e60_0 .net "clk", 0 0, C4; 0 drivers +v0xe17850_0 .net "d", 0 0, C4; 0 drivers +v0xe178f0_0 .var "q", 0 0; +v0xe17990_0 .net "wrenable", 0 0, C4; 0 drivers +E_0xe088c0 .event posedge, v0xe04e60_0; +S_0xe05d70 .scope module, "testshiftregister" "testshiftregister" 3 7; .timescale 0 0; -P_0x21b23c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x21b23f0 .param/l "waittime" 3 19, +C4<011>; -v0x21b22c0_0 .net "clk", 0 0, v0x2200780_0; 1 drivers -v0x2200280_0 .var "conditioned", 0 0; -v0x2200320_0 .var "counter", 2 0; -v0x22003c0_0 .var "negativeedge", 0 0; -v0x2200470_0 .net "noisysignal", 0 0, v0x2200980_0; 1 drivers -v0x2200510_0 .var "positiveedge", 0 0; -v0x22005f0_0 .var "synchronizer0", 0 0; -v0x2200690_0 .var "synchronizer1", 0 0; -E_0x21ed440 .event posedge, v0x21b22c0_0; - .scope S_0x21b1820; +v0xe18200_0 .var "clk", 0 0; +v0xe182a0_0 .var "parallelDataIn", 7 0; +v0xe18350_0 .net "parallelDataOut", 7 0, C4; 0 drivers +v0xe18400_0 .var "parallelLoad", 0 0; +v0xe184e0_0 .var "peripheralClkEdge", 0 0; +v0xe18590_0 .var "serialDataIn", 0 0; +v0xe18610_0 .net "serialDataOut", 0 0, C4; 0 drivers +S_0xe17a40 .scope module, "dut" "shiftregister" 3 18, 2 9, S_0xe05d70; + .timescale 0 0; +P_0xe17b38 .param/l "width" 2 10, +C4<01000>; +v0xe17c40_0 .net "clk", 0 0, v0xe18200_0; 1 drivers +v0xe17d00_0 .net "parallelDataIn", 7 0, v0xe182a0_0; 1 drivers +v0xe17da0_0 .alias "parallelDataOut", 7 0, v0xe18350_0; +v0xe17e40_0 .net "parallelLoad", 0 0, v0xe18400_0; 1 drivers +v0xe17ef0_0 .net "peripheralClkEdge", 0 0, v0xe184e0_0; 1 drivers +v0xe17f90_0 .net "serialDataIn", 0 0, v0xe18590_0; 1 drivers +v0xe18070_0 .alias "serialDataOut", 0 0, v0xe18610_0; +v0xe18110_0 .var "shiftregistermem", 7 0; +E_0xe17bf0 .event posedge, v0xe17c40_0; + .scope S_0xe05c80; T_0 ; - %set/v v0x2200320_0, 0, 3; - %end; + %wait E_0xe088c0; + %load/v 8, v0xe17990_0, 1; + %jmp/0xz T_0.0, 8; + %load/v 8, v0xe17850_0, 1; + %set/v v0xe178f0_0, 8, 1; +T_0.0 ; + %jmp T_0; .thread T_0; - .scope S_0x21b1820; + .scope S_0xe17a40; T_1 ; - %set/v v0x22005f0_0, 0, 1; - %end; + %wait E_0xe17bf0; + %load/v 8, v0xe17e40_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_1.0, 4; + %ix/load 1, 1, 0; + %mov 4, 0, 1; + %jmp/1 T_1.2, 4; + %load/x1p 8, v0xe17d00_0, 1; + %jmp T_1.3; +T_1.2 ; + %mov 8, 2, 1; +T_1.3 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 1, 0; + %assign/v0/x1 v0xe18110_0, 0, 8; +T_1.0 ; + %jmp T_1; .thread T_1; - .scope S_0x21b1820; + .scope S_0xe05d70; T_2 ; - %set/v v0x2200690_0, 0, 1; + %set/v v0xe18200_0, 0, 1; %end; .thread T_2; - .scope S_0x21b1820; + .scope S_0xe05d70; T_3 ; - %wait E_0x21ed440; - %load/v 8, v0x2200280_0, 1; - %load/v 9, v0x2200690_0, 1; - %cmp/u 8, 9, 1; - %jmp/0xz T_3.0, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 0; - %jmp T_3.1; -T_3.0 ; - %load/v 8, v0x2200320_0, 3; - %mov 11, 0, 1; - %cmpi/u 8, 3, 4; - %jmp/0xz T_3.2, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 0; - %load/v 8, v0x2200690_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x2200280_0, 0, 8; - %load/v 8, v0x2200280_0, 1; - %mov 9, 0, 1; - %cmpi/u 8, 0, 2; - %mov 8, 4, 1; - %load/v 9, v0x2200690_0, 1; - %mov 10, 0, 2; - %cmpi/u 9, 1, 3; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.4, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x2200510_0, 0, 1; -T_3.4 ; - %load/v 8, v0x2200280_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %mov 8, 4, 1; - %load/v 9, v0x2200690_0, 1; - %mov 10, 0, 1; - %cmpi/u 9, 0, 2; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.6, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x22003c0_0, 0, 1; -T_3.6 ; - %jmp T_3.3; -T_3.2 ; - %load/v 8, v0x2200320_0, 3; - %mov 11, 0, 29; - %addi 8, 1, 32; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 8; -T_3.3 ; -T_3.1 ; - %load/v 8, v0x2200510_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.8, 4; - %ix/load 0, 1, 0; - %assign/v0 v0x2200510_0, 0, 0; -T_3.8 ; - %load/v 8, v0x22003c0_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.10, 4; - %ix/load 0, 1, 0; - %assign/v0 v0x22003c0_0, 0, 0; -T_3.10 ; - %load/v 8, v0x2200470_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x22005f0_0, 0, 8; - %load/v 8, v0x22005f0_0, 1; - %ix/load 0, 1, 0; - %assign/v0 v0x2200690_0, 0, 8; + %delay 10, 0; + %load/v 8, v0xe18200_0, 1; + %inv 8, 1; + %set/v v0xe18200_0, 8, 1; %jmp T_3; .thread T_3; - .scope S_0x21b1730; + .scope S_0xe05d70; T_4 ; - %set/v v0x2200780_0, 0, 1; - %end; - .thread T_4; - .scope S_0x21b1730; -T_5 ; - %delay 10, 0; - %load/v 8, v0x2200780_0, 1; - %inv 8, 1; - %set/v v0x2200780_0, 8, 1; - %jmp T_5; - .thread T_5; - .scope S_0x21b1730; -T_6 ; - %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; - %vpi_call 2 26 "$dumpvars"; - %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; - %set/v v0x2200980_0, 0, 1; + %vpi_call 3 32 "$dumpfile", "shift.vcd"; + %vpi_call 3 33 "$dumpvars"; + %vpi_call 3 35 "$display", " test stuff here "; + %set/v v0xe18400_0, 1, 1; + %movi 8, 86, 8; + %set/v v0xe182a0_0, 8, 8; %delay 400, 0; - %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 100, 0; - %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 2, 0; - %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 100, 0; - %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 300, 0; - %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 3, 0; - %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 100, 0; - %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 200, 0; - %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %vpi_call 2 46 "$finish"; + %vpi_call 3 37 "$display", "%b | %b | %b | %b ", v0xe18200_0, v0xe18400_0, v0xe182a0_0, v0xe18610_0; %end; - .thread T_6; + .thread T_4; # The file index is used to find the file name in the following table. :file_names 4; "N/A"; ""; - "inputconditioner.t.v"; - "./inputconditioner.v"; + "./shiftregister.v"; + "shiftregister.t.v"; From 9e474387a90db6bfbb808eedb4526c859ab6449e Mon Sep 17 00:00:00 2001 From: LoganSweet Date: Tue, 24 Oct 2017 13:27:07 -0400 Subject: [PATCH 19/39] comments added for thoughts --- shiftregister.v | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/shiftregister.v b/shiftregister.v index 96d133b..2207a78 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -21,8 +21,21 @@ output serialDataOut // Positive edge synchronized reg [width-1:0] shiftregistermem; always @(posedge clk) begin - -if(parallelLoad == 1) begin // do thisfor parallel data in +// idea for serial in to parallel out: +// use a lookup table to send 1s to the correct flip flop, they control write enable +// send wrenable for the entire time that the relevant data piece is visible on the wire + +// idea for parallal in to serial out: +// us a mux to decide in order which one to output +// mux is connected to all of the parallel data in, +// only outputs the one you ask for based on clock + + + +flipflop ff0(q, d, shiftregistermem, clk) + + +//if(parallelLoad == 1) begin // do thisfor parallel data in shiftregistermem[1] <= parallelDataIn[1]; // shiftregistermem[2] <= parallelDataIn[1]; // parallelDataIn[3] <= parallelDataIn[2]; From 5997218301d015663288ef244589c4d849df2d67 Mon Sep 17 00:00:00 2001 From: mjakus Date: Tue, 24 Oct 2017 18:11:35 -0400 Subject: [PATCH 20/39] Shift register works, adding midpoint.v --- midpoint.v | 40 ++++ shiftregister.t.v | 30 ++- shiftregister.v | 43 ++-- shiftregister.vcd | 143 ++++++++++++++ tes1 | 494 ++++++++++++++++++++++++++++++++++++++++++++++ test | 342 +++++++++++++++++++------------- 6 files changed, 936 insertions(+), 156 deletions(-) create mode 100644 midpoint.v create mode 100644 shiftregister.vcd create mode 100755 tes1 diff --git a/midpoint.v b/midpoint.v new file mode 100644 index 0000000..49a8f26 --- /dev/null +++ b/midpoint.v @@ -0,0 +1,40 @@ +// Midpoint deliverable file + +`include "inputconditioner.v" +`include "shiftregister.v" + +module midpoint +#(parameter width = 8) +( +input switch0, // SerialDataIn +input switch1, // peripheralClkEdge +input button, // ParallelLoad +input clk, +input [width-1:0] parallelDataIn, +output wire [width-1:0] parallelDataOut2 +); + +wire conditioned0; +wire positiveedge0; +wire negativeedge0; + +wire conditioned1; +wire positiveedge1; +wire negativeedge1; + +wire conditioned2; +wire positiveedge2; +wire negativeedge2; + +wire serialDataOut; + +inputconditioner parallelLoadCond(clk, button, conditioned0, positiveedge0, negativeedge0); // negativeedge0 is your cleaned up button/ParallelLoad + +inputconditioner serialInCond(clk, switch0, conditioned1, positiveedge1, negativeedge1); // conditioned1 is your cleaned up SerialDataIn + +inputconditioner SCLKCond(clk, switch1, conditioned2, positiveedge2, negativeedge2); // positiveedge2 is your cleaned up peripheralClkEdge + +shiftregister shift(clk, positiveedge2, negativeedge0, parallelDataIn, switch0, parallelDataOut2, serialDataOut); + + +endmodule diff --git a/shiftregister.t.v b/shiftregister.t.v index aa531d9..f3b95cb 100644 --- a/shiftregister.t.v +++ b/shiftregister.t.v @@ -28,7 +28,35 @@ module testshiftregister(); always #10 clk=!clk; // 50MHz Clock initial begin - // Your Test Code + +$dumpfile("shiftregister.vcd"); +$dumpvars(); + + + $display("PIn? | PDataIn | SDataOut"); + parallelLoad =1; parallelDataIn = 8'b00011111; #20 + $display("%b | %b | %b ", parallelLoad, parallelDataIn, serialDataOut); + parallelLoad =1; parallelDataIn = 8'b00111101; #20 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); + parallelLoad =1; parallelDataIn = 8'b10011110; #20 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); + + + + $display("PIn? | PClock| SDataIn | PDataOut"); + parallelLoad =0; peripheralClkEdge = 1; serialDataIn = 1; #20 + $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + parallelLoad =0; peripheralClkEdge = 0; serialDataIn = 1; #20 + $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + parallelLoad =0; peripheralClkEdge = 1; serialDataIn = 0; #20 + $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + parallelLoad =0; peripheralClkEdge = 0; serialDataIn = 0; #20 + $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + parallelLoad =0; peripheralClkEdge =1; serialDataIn = 0; #20 + $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + + + $finish; end endmodule diff --git a/shiftregister.v b/shiftregister.v index 1bf2934..8d70920 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -14,29 +14,40 @@ input peripheralClkEdge, // Edge indicator input parallelLoad, // 1 = Load shift reg with parallelDataIn input [width-1:0] parallelDataIn, // Load shift reg in parallel input serialDataIn, // Load shift reg serially -output [width-1:0] parallelDataOut, // Shift reg data contents -output serialDataOut // Positive edge synchronized +output reg [width-1:0] parallelDataOut, // Shift reg data contents +output reg serialDataOut // Positive edge synchronized ); reg [width-1:0] shiftregistermem; +//wire serialDataOut; + always @(posedge clk) begin -if(parallelLoad ==1) begin // do thisfor parallel data in - serialDataOut <= parallelDataIn[8]; - serialDataOut <= parallelDataIn[7]; - serialDataOut <= parallelDataIn[6]; - serialDataOut <= parallelDataIn[5]; - serialDataOut <= parallelDataIn[4]; - serialDataOut <= parallelDataIn[3]; - serialDataOut <= parallelDataIn[2]; - serialDataOut <= parallelDataIn[1]; - serialDataOut <= parallelDataIn[0]; -end + if(parallelLoad ==1) begin // do thisfor parallel data in -else begin // do this for serial data in - // serial stuff goes here -end + shiftregistermem <= parallelDataIn; + serialDataOut <= shiftregistermem[width-1]; + parallelDataOut <= shiftregistermem; + + end + + if(parallelLoad ==0) begin // We are deciding that parallelLoad will win. This takes priority over serial shift - peripheralClkEdge only matters if parallelLoad = 0. + if (peripheralClkEdge == 1) begin + + shiftregistermem[1] <= shiftregistermem[0]; + shiftregistermem[2] <= shiftregistermem[1]; + shiftregistermem[3] <= shiftregistermem[2]; + shiftregistermem[4] <= shiftregistermem[3]; + shiftregistermem[5] <= shiftregistermem[4]; + shiftregistermem[6] <= shiftregistermem[5]; + shiftregistermem[7] <= shiftregistermem[6]; + shiftregistermem[0] <= serialDataIn; + //shiftregistermem <= {{shiftregistermem[width-2:0]}, {serialDataIn}}; + end + parallelDataOut <= shiftregistermem; + + end end diff --git a/shiftregister.vcd b/shiftregister.vcd new file mode 100644 index 0000000..8564bbe --- /dev/null +++ b/shiftregister.vcd @@ -0,0 +1,143 @@ +$date + Tue Oct 24 18:10:09 2017 +$end +$version + Icarus Verilog +$end +$timescale + 1s +$end +$scope module flipflop $end +$var wire 1 ! clk $end +$var wire 1 " d $end +$var wire 1 # wrenable $end +$var reg 1 $ q $end +$upscope $end +$scope module testshiftregister $end +$var wire 8 % parallelDataOut [7:0] $end +$var wire 1 & serialDataOut $end +$var reg 1 ' clk $end +$var reg 8 ( parallelDataIn [7:0] $end +$var reg 1 ) parallelLoad $end +$var reg 1 * peripheralClkEdge $end +$var reg 1 + serialDataIn $end +$scope module dut $end +$var wire 1 , clk $end +$var wire 8 - parallelDataIn [7:0] $end +$var wire 1 . parallelLoad $end +$var wire 1 / peripheralClkEdge $end +$var wire 1 0 serialDataIn $end +$var reg 8 1 parallelDataOut [7:0] $end +$var reg 1 2 serialDataOut $end +$var reg 8 3 shiftregistermem [7:0] $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +bx 3 +x2 +bx 1 +x0 +x/ +1. +b11111 - +0, +x+ +x* +1) +b11111 ( +0' +x& +bx % +x$ +z# +z" +z! +$end +#10 +b11111 3 +1' +1, +#20 +0' +0, +b111101 ( +b111101 - +#30 +b11111 1 +b11111 % +02 +0& +b111101 3 +1' +1, +#40 +0' +0, +b10011110 ( +b10011110 - +#50 +b111101 1 +b111101 % +b10011110 3 +1' +1, +#60 +0' +0, +1+ +10 +1* +1/ +0) +0. +#70 +b10011110 1 +b10011110 % +b111101 3 +1' +1, +#80 +0' +0, +0* +0/ +#90 +b111101 1 +b111101 % +1' +1, +#100 +0' +0, +0+ +00 +1* +1/ +#110 +b1111010 3 +1' +1, +#120 +0' +0, +0* +0/ +#130 +b1111010 1 +b1111010 % +1' +1, +#140 +0' +0, +1* +1/ +#150 +b11110100 3 +1' +1, +#160 +0' +0, diff --git a/tes1 b/tes1 new file mode 100755 index 0000000..3f5cf27 --- /dev/null +++ b/tes1 @@ -0,0 +1,494 @@ +#! /usr/bin/vvp +:ivl_version "0.9.7 " "(v0_9_7)"; +:vpi_time_precision + 0; +:vpi_module "system"; +:vpi_module "v2005_math"; +:vpi_module "va_math"; +S_0x15cd690 .scope module, "flipflop" "flipflop" 2 66; + .timescale 0 0; +v0x1606700_0 .net "clk", 0 0, C4; 0 drivers +v0x1624100_0 .net "d", 0 0, C4; 0 drivers +v0x16241a0_0 .var "q", 0 0; +v0x1624240_0 .net "wrenable", 0 0, C4; 0 drivers +E_0x15f5200 .event posedge, v0x1606700_0; +S_0x15cd780 .scope module, "midpoint" "midpoint" 3 6; + .timescale 0 0; +P_0x15faea8 .param/l "width" 3 7, +C4<01000>; +v0x1626070_0 .net "button", 0 0, C4; 0 drivers +v0x1626110_0 .net "clk", 0 0, C4; 0 drivers +v0x1626220_0 .net "conditioned0", 0 0, v0x1625bb0_0; 1 drivers +v0x16262d0_0 .net "conditioned1", 0 0, v0x1625480_0; 1 drivers +v0x16263b0_0 .net "conditioned2", 0 0, v0x1624d20_0; 1 drivers +v0x1626460_0 .net "negativeedge0", 0 0, v0x1625cf0_0; 1 drivers +v0x16264e0_0 .net "negativeedge1", 0 0, v0x16255c0_0; 1 drivers +v0x1626560_0 .net "negativeedge2", 0 0, v0x1624e40_0; 1 drivers +v0x1626630_0 .net "parallelDataIn", 7 0, C4; 0 drivers +v0x16266e0_0 .net "parallelDataOut2", 7 0, v0x1624650_0; 1 drivers +v0x16267f0_0 .net "positiveedge0", 0 0, v0x1625e20_0; 1 drivers +v0x16268a0_0 .net "positiveedge1", 0 0, v0x16256f0_0; 1 drivers +v0x16269c0_0 .net "positiveedge2", 0 0, v0x1624f90_0; 1 drivers +v0x1626a40_0 .net "serialDataOut", 0 0, v0x1624920_0; 1 drivers +v0x1626b40_0 .net "switch0", 0 0, C4; 0 drivers +v0x1626c10_0 .net "switch1", 0 0, C4; 0 drivers +S_0x1625940 .scope module, "parallelLoadCond" "inputconditioner" 3 31, 4 9, S_0x15cd780; + .timescale 0 0; +P_0x1625a38 .param/l "counterwidth" 4 18, +C4<011>; +P_0x1625a60 .param/l "waittime" 4 19, +C4<011>; +v0x1625b30_0 .alias "clk", 0 0, v0x1626110_0; +v0x1625bb0_0 .var "conditioned", 0 0; +v0x1625c50_0 .var "counter", 2 0; +v0x1625cf0_0 .var "negativeedge", 0 0; +v0x1625da0_0 .alias "noisysignal", 0 0, v0x1626070_0; +v0x1625e20_0 .var "positiveedge", 0 0; +v0x1625ee0_0 .var "synchronizer0", 0 0; +v0x1625f80_0 .var "synchronizer1", 0 0; +S_0x16251c0 .scope module, "serialInCond" "inputconditioner" 3 33, 4 9, S_0x15cd780; + .timescale 0 0; +P_0x16252b8 .param/l "counterwidth" 4 18, +C4<011>; +P_0x16252e0 .param/l "waittime" 4 19, +C4<011>; +v0x16253b0_0 .alias "clk", 0 0, v0x1626110_0; +v0x1625480_0 .var "conditioned", 0 0; +v0x1625520_0 .var "counter", 2 0; +v0x16255c0_0 .var "negativeedge", 0 0; +v0x1625640_0 .alias "noisysignal", 0 0, v0x1626b40_0; +v0x16256f0_0 .var "positiveedge", 0 0; +v0x16257b0_0 .var "synchronizer0", 0 0; +v0x1625850_0 .var "synchronizer1", 0 0; +S_0x1624ab0 .scope module, "SCLKCond" "inputconditioner" 3 35, 4 9, S_0x15cd780; + .timescale 0 0; +P_0x1624ba8 .param/l "counterwidth" 4 18, +C4<011>; +P_0x1624bd0 .param/l "waittime" 4 19, +C4<011>; +v0x1624ca0_0 .alias "clk", 0 0, v0x1626110_0; +v0x1624d20_0 .var "conditioned", 0 0; +v0x1624da0_0 .var "counter", 2 0; +v0x1624e40_0 .var "negativeedge", 0 0; +v0x1624ef0_0 .alias "noisysignal", 0 0, v0x1626c10_0; +v0x1624f90_0 .var "positiveedge", 0 0; +v0x1625050_0 .var "synchronizer0", 0 0; +v0x16250d0_0 .var "synchronizer1", 0 0; +S_0x16242f0 .scope module, "shift" "shiftregister" 3 38, 2 9, S_0x15cd780; + .timescale 0 0; +P_0x16243e8 .param/l "width" 2 10, +C4<01000>; +v0x16244f0_0 .alias "clk", 0 0, v0x1626110_0; +v0x16245b0_0 .alias "parallelDataIn", 7 0, v0x1626630_0; +v0x1624650_0 .var "parallelDataOut", 7 0; +v0x16246f0_0 .alias "parallelLoad", 0 0, v0x1626460_0; +v0x16247a0_0 .alias "peripheralClkEdge", 0 0, v0x16269c0_0; +v0x1624840_0 .alias "serialDataIn", 0 0, v0x1626b40_0; +v0x1624920_0 .var "serialDataOut", 0 0; +v0x16249c0_0 .var "shiftregistermem", 7 0; +E_0x16244a0 .event posedge, v0x16244f0_0; + .scope S_0x15cd690; +T_0 ; + %wait E_0x15f5200; + %load/v 8, v0x1624240_0, 1; + %jmp/0xz T_0.0, 8; + %load/v 8, v0x1624100_0, 1; + %set/v v0x16241a0_0, 8, 1; +T_0.0 ; + %jmp T_0; + .thread T_0; + .scope S_0x1625940; +T_1 ; + %set/v v0x1625c50_0, 0, 3; + %end; + .thread T_1; + .scope S_0x1625940; +T_2 ; + %set/v v0x1625ee0_0, 0, 1; + %end; + .thread T_2; + .scope S_0x1625940; +T_3 ; + %set/v v0x1625f80_0, 0, 1; + %end; + .thread T_3; + .scope S_0x1625940; +T_4 ; + %wait E_0x16244a0; + %load/v 8, v0x1625bb0_0, 1; + %load/v 9, v0x1625f80_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_4.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1625c50_0, 0, 0; + %jmp T_4.1; +T_4.0 ; + %load/v 8, v0x1625c50_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_4.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1625c50_0, 0, 0; + %load/v 8, v0x1625f80_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625bb0_0, 0, 8; + %load/v 8, v0x1625bb0_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x1625f80_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_4.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1625e20_0, 0, 1; +T_4.4 ; + %load/v 8, v0x1625bb0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x1625f80_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_4.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1625cf0_0, 0, 1; +T_4.6 ; + %jmp T_4.3; +T_4.2 ; + %load/v 8, v0x1625c50_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x1625c50_0, 0, 8; +T_4.3 ; +T_4.1 ; + %load/v 8, v0x1625e20_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_4.8, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1625e20_0, 0, 0; +T_4.8 ; + %load/v 8, v0x1625cf0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_4.10, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1625cf0_0, 0, 0; +T_4.10 ; + %load/v 8, v0x1625da0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625ee0_0, 0, 8; + %load/v 8, v0x1625ee0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625f80_0, 0, 8; + %jmp T_4; + .thread T_4; + .scope S_0x16251c0; +T_5 ; + %set/v v0x1625520_0, 0, 3; + %end; + .thread T_5; + .scope S_0x16251c0; +T_6 ; + %set/v v0x16257b0_0, 0, 1; + %end; + .thread T_6; + .scope S_0x16251c0; +T_7 ; + %set/v v0x1625850_0, 0, 1; + %end; + .thread T_7; + .scope S_0x16251c0; +T_8 ; + %wait E_0x16244a0; + %load/v 8, v0x1625480_0, 1; + %load/v 9, v0x1625850_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_8.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1625520_0, 0, 0; + %jmp T_8.1; +T_8.0 ; + %load/v 8, v0x1625520_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_8.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1625520_0, 0, 0; + %load/v 8, v0x1625850_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625480_0, 0, 8; + %load/v 8, v0x1625480_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x1625850_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_8.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x16256f0_0, 0, 1; +T_8.4 ; + %load/v 8, v0x1625480_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x1625850_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_8.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x16255c0_0, 0, 1; +T_8.6 ; + %jmp T_8.3; +T_8.2 ; + %load/v 8, v0x1625520_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x1625520_0, 0, 8; +T_8.3 ; +T_8.1 ; + %load/v 8, v0x16256f0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_8.8, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x16256f0_0, 0, 0; +T_8.8 ; + %load/v 8, v0x16255c0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_8.10, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x16255c0_0, 0, 0; +T_8.10 ; + %load/v 8, v0x1625640_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x16257b0_0, 0, 8; + %load/v 8, v0x16257b0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625850_0, 0, 8; + %jmp T_8; + .thread T_8; + .scope S_0x1624ab0; +T_9 ; + %set/v v0x1624da0_0, 0, 3; + %end; + .thread T_9; + .scope S_0x1624ab0; +T_10 ; + %set/v v0x1625050_0, 0, 1; + %end; + .thread T_10; + .scope S_0x1624ab0; +T_11 ; + %set/v v0x16250d0_0, 0, 1; + %end; + .thread T_11; + .scope S_0x1624ab0; +T_12 ; + %wait E_0x16244a0; + %load/v 8, v0x1624d20_0, 1; + %load/v 9, v0x16250d0_0, 1; + %cmp/u 8, 9, 1; + %jmp/0xz T_12.0, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1624da0_0, 0, 0; + %jmp T_12.1; +T_12.0 ; + %load/v 8, v0x1624da0_0, 3; + %mov 11, 0, 1; + %cmpi/u 8, 3, 4; + %jmp/0xz T_12.2, 4; + %ix/load 0, 3, 0; + %assign/v0 v0x1624da0_0, 0, 0; + %load/v 8, v0x16250d0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1624d20_0, 0, 8; + %load/v 8, v0x1624d20_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %mov 8, 4, 1; + %load/v 9, v0x16250d0_0, 1; + %mov 10, 0, 2; + %cmpi/u 9, 1, 3; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_12.4, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1624f90_0, 0, 1; +T_12.4 ; + %load/v 8, v0x1624d20_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %mov 8, 4, 1; + %load/v 9, v0x16250d0_0, 1; + %mov 10, 0, 1; + %cmpi/u 9, 0, 2; + %mov 9, 4, 1; + %and 8, 9, 1; + %jmp/0xz T_12.6, 8; + %ix/load 0, 1, 0; + %assign/v0 v0x1624e40_0, 0, 1; +T_12.6 ; + %jmp T_12.3; +T_12.2 ; + %load/v 8, v0x1624da0_0, 3; + %mov 11, 0, 29; + %addi 8, 1, 32; + %ix/load 0, 3, 0; + %assign/v0 v0x1624da0_0, 0, 8; +T_12.3 ; +T_12.1 ; + %load/v 8, v0x1624f90_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_12.8, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1624f90_0, 0, 0; +T_12.8 ; + %load/v 8, v0x1624e40_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_12.10, 4; + %ix/load 0, 1, 0; + %assign/v0 v0x1624e40_0, 0, 0; +T_12.10 ; + %load/v 8, v0x1624ef0_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x1625050_0, 0, 8; + %load/v 8, v0x1625050_0, 1; + %ix/load 0, 1, 0; + %assign/v0 v0x16250d0_0, 0, 8; + %jmp T_12; + .thread T_12; + .scope S_0x16242f0; +T_13 ; + %wait E_0x16244a0; + %load/v 8, v0x16246f0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_13.0, 4; + %load/v 8, v0x16245b0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x16249c0_0, 0, 8; + %ix/load 1, 7, 0; + %mov 4, 0, 1; + %jmp/1 T_13.2, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.3; +T_13.2 ; + %mov 8, 2, 1; +T_13.3 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %assign/v0 v0x1624920_0, 0, 8; + %load/v 8, v0x16249c0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x1624650_0, 0, 8; +T_13.0 ; + %load/v 8, v0x16246f0_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %jmp/0xz T_13.4, 4; + %load/v 8, v0x16247a0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_13.6, 4; + %load/v 8, v0x16249c0_0, 1; Only need 1 of 8 bits +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 1, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 1, 0; + %mov 4, 0, 1; + %jmp/1 T_13.8, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.9; +T_13.8 ; + %mov 8, 2, 1; +T_13.9 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 2, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 2, 0; + %mov 4, 0, 1; + %jmp/1 T_13.10, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.11; +T_13.10 ; + %mov 8, 2, 1; +T_13.11 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 3, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 3, 0; + %mov 4, 0, 1; + %jmp/1 T_13.12, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.13; +T_13.12 ; + %mov 8, 2, 1; +T_13.13 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 4, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 4, 0; + %mov 4, 0, 1; + %jmp/1 T_13.14, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.15; +T_13.14 ; + %mov 8, 2, 1; +T_13.15 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 5, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 5, 0; + %mov 4, 0, 1; + %jmp/1 T_13.16, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.17; +T_13.16 ; + %mov 8, 2, 1; +T_13.17 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 6, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %ix/load 1, 6, 0; + %mov 4, 0, 1; + %jmp/1 T_13.18, 4; + %load/x1p 8, v0x16249c0_0, 1; + %jmp T_13.19; +T_13.18 ; + %mov 8, 2, 1; +T_13.19 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 7, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; + %load/v 8, v0x1624840_0, 1; + %ix/load 0, 1, 0; + %ix/load 1, 0, 0; + %assign/v0/x1 v0x16249c0_0, 0, 8; +T_13.6 ; + %load/v 8, v0x16249c0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x1624650_0, 0, 8; +T_13.4 ; + %jmp T_13; + .thread T_13; +# The file index is used to find the file name in the following table. +:file_names 5; + "N/A"; + ""; + "./shiftregister.v"; + "midpoint.v"; + "./inputconditioner.v"; diff --git a/test b/test index 77e3314..9c7c042 100755 --- a/test +++ b/test @@ -4,166 +4,230 @@ :vpi_module "system"; :vpi_module "v2005_math"; :vpi_module "va_math"; -S_0x21b1730 .scope module, "testConditioner" "testConditioner" 2 6; +S_0x1463a10 .scope module, "flipflop" "flipflop" 2 66; .timescale 0 0; -v0x2200780_0 .var "clk", 0 0; -v0x2200820_0 .net "conditioned", 0 0, v0x2200280_0; 1 drivers -v0x22008d0_0 .net "falling", 0 0, v0x22003c0_0; 1 drivers -v0x2200980_0 .var "pin", 0 0; -v0x2200a60_0 .net "rising", 0 0, v0x2200510_0; 1 drivers -S_0x21b1820 .scope module, "dut" "inputconditioner" 2 15, 3 9, S_0x21b1730; +v0x1460e60_0 .net "clk", 0 0, C4; 0 drivers +v0x147e2f0_0 .net "d", 0 0, C4; 0 drivers +v0x147e390_0 .var "q", 0 0; +v0x147e430_0 .net "wrenable", 0 0, C4; 0 drivers +E_0x14519b0 .event posedge, v0x1460e60_0; +S_0x1463b00 .scope module, "testshiftregister" "testshiftregister" 3 7; .timescale 0 0; -P_0x21b23c8 .param/l "counterwidth" 3 18, +C4<011>; -P_0x21b23f0 .param/l "waittime" 3 19, +C4<011>; -v0x21b22c0_0 .net "clk", 0 0, v0x2200780_0; 1 drivers -v0x2200280_0 .var "conditioned", 0 0; -v0x2200320_0 .var "counter", 2 0; -v0x22003c0_0 .var "negativeedge", 0 0; -v0x2200470_0 .net "noisysignal", 0 0, v0x2200980_0; 1 drivers -v0x2200510_0 .var "positiveedge", 0 0; -v0x22005f0_0 .var "synchronizer0", 0 0; -v0x2200690_0 .var "synchronizer1", 0 0; -E_0x21ed440 .event posedge, v0x21b22c0_0; - .scope S_0x21b1820; +v0x147eca0_0 .var "clk", 0 0; +v0x147ed40_0 .var "parallelDataIn", 7 0; +v0x147edf0_0 .net "parallelDataOut", 7 0, v0x147e840_0; 1 drivers +v0x147eea0_0 .var "parallelLoad", 0 0; +v0x147ef80_0 .var "peripheralClkEdge", 0 0; +v0x147f030_0 .var "serialDataIn", 0 0; +v0x147f0b0_0 .net "serialDataOut", 0 0, v0x147eb10_0; 1 drivers +S_0x147e4e0 .scope module, "dut" "shiftregister" 3 18, 2 9, S_0x1463b00; + .timescale 0 0; +P_0x147e5d8 .param/l "width" 2 10, +C4<01000>; +v0x147e6e0_0 .net "clk", 0 0, v0x147eca0_0; 1 drivers +v0x147e7a0_0 .net "parallelDataIn", 7 0, v0x147ed40_0; 1 drivers +v0x147e840_0 .var "parallelDataOut", 7 0; +v0x147e8e0_0 .net "parallelLoad", 0 0, v0x147eea0_0; 1 drivers +v0x147e990_0 .net "peripheralClkEdge", 0 0, v0x147ef80_0; 1 drivers +v0x147ea30_0 .net "serialDataIn", 0 0, v0x147f030_0; 1 drivers +v0x147eb10_0 .var "serialDataOut", 0 0; +v0x147ebb0_0 .var "shiftregistermem", 7 0; +E_0x147e690 .event posedge, v0x147e6e0_0; + .scope S_0x1463a10; T_0 ; - %set/v v0x2200320_0, 0, 3; - %end; + %wait E_0x14519b0; + %load/v 8, v0x147e430_0, 1; + %jmp/0xz T_0.0, 8; + %load/v 8, v0x147e2f0_0, 1; + %set/v v0x147e390_0, 8, 1; +T_0.0 ; + %jmp T_0; .thread T_0; - .scope S_0x21b1820; + .scope S_0x147e4e0; T_1 ; - %set/v v0x22005f0_0, 0, 1; - %end; - .thread T_1; - .scope S_0x21b1820; -T_2 ; - %set/v v0x2200690_0, 0, 1; - %end; - .thread T_2; - .scope S_0x21b1820; -T_3 ; - %wait E_0x21ed440; - %load/v 8, v0x2200280_0, 1; - %load/v 9, v0x2200690_0, 1; - %cmp/u 8, 9, 1; - %jmp/0xz T_3.0, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 0; - %jmp T_3.1; -T_3.0 ; - %load/v 8, v0x2200320_0, 3; - %mov 11, 0, 1; - %cmpi/u 8, 3, 4; - %jmp/0xz T_3.2, 4; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 0; - %load/v 8, v0x2200690_0, 1; + %wait E_0x147e690; + %load/v 8, v0x147e8e0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_1.0, 4; + %load/v 8, v0x147e7a0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x147ebb0_0, 0, 8; + %ix/load 1, 7, 0; + %mov 4, 0, 1; + %jmp/1 T_1.2, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.3; +T_1.2 ; + %mov 8, 2, 1; +T_1.3 ; +; Save base=8 wid=1 in lookaside. %ix/load 0, 1, 0; - %assign/v0 v0x2200280_0, 0, 8; - %load/v 8, v0x2200280_0, 1; + %assign/v0 v0x147eb10_0, 0, 8; + %load/v 8, v0x147ebb0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x147e840_0, 0, 8; +T_1.0 ; + %load/v 8, v0x147e8e0_0, 1; %mov 9, 0, 1; %cmpi/u 8, 0, 2; - %mov 8, 4, 1; - %load/v 9, v0x2200690_0, 1; - %mov 10, 0, 2; - %cmpi/u 9, 1, 3; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.4, 8; - %ix/load 0, 1, 0; - %assign/v0 v0x2200510_0, 0, 1; -T_3.4 ; - %load/v 8, v0x2200280_0, 1; + %jmp/0xz T_1.4, 4; + %load/v 8, v0x147e990_0, 1; %mov 9, 0, 2; %cmpi/u 8, 1, 3; - %mov 8, 4, 1; - %load/v 9, v0x2200690_0, 1; - %mov 10, 0, 1; - %cmpi/u 9, 0, 2; - %mov 9, 4, 1; - %and 8, 9, 1; - %jmp/0xz T_3.6, 8; + %jmp/0xz T_1.6, 4; + %load/v 8, v0x147ebb0_0, 1; Only need 1 of 8 bits +; Save base=8 wid=1 in lookaside. %ix/load 0, 1, 0; - %assign/v0 v0x22003c0_0, 0, 1; -T_3.6 ; - %jmp T_3.3; -T_3.2 ; - %load/v 8, v0x2200320_0, 3; - %mov 11, 0, 29; - %addi 8, 1, 32; - %ix/load 0, 3, 0; - %assign/v0 v0x2200320_0, 0, 8; -T_3.3 ; -T_3.1 ; - %load/v 8, v0x2200510_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.8, 4; + %ix/load 1, 1, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 1, 0; + %mov 4, 0, 1; + %jmp/1 T_1.8, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.9; +T_1.8 ; + %mov 8, 2, 1; +T_1.9 ; +; Save base=8 wid=1 in lookaside. %ix/load 0, 1, 0; - %assign/v0 v0x2200510_0, 0, 0; -T_3.8 ; - %load/v 8, v0x22003c0_0, 1; - %mov 9, 0, 2; - %cmpi/u 8, 1, 3; - %jmp/0xz T_3.10, 4; + %ix/load 1, 2, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 2, 0; + %mov 4, 0, 1; + %jmp/1 T_1.10, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.11; +T_1.10 ; + %mov 8, 2, 1; +T_1.11 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 3, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 3, 0; + %mov 4, 0, 1; + %jmp/1 T_1.12, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.13; +T_1.12 ; + %mov 8, 2, 1; +T_1.13 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 4, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 4, 0; + %mov 4, 0, 1; + %jmp/1 T_1.14, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.15; +T_1.14 ; + %mov 8, 2, 1; +T_1.15 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %ix/load 1, 5, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 5, 0; + %mov 4, 0, 1; + %jmp/1 T_1.16, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.17; +T_1.16 ; + %mov 8, 2, 1; +T_1.17 ; +; Save base=8 wid=1 in lookaside. %ix/load 0, 1, 0; - %assign/v0 v0x22003c0_0, 0, 0; -T_3.10 ; - %load/v 8, v0x2200470_0, 1; + %ix/load 1, 6, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %ix/load 1, 6, 0; + %mov 4, 0, 1; + %jmp/1 T_1.18, 4; + %load/x1p 8, v0x147ebb0_0, 1; + %jmp T_1.19; +T_1.18 ; + %mov 8, 2, 1; +T_1.19 ; +; Save base=8 wid=1 in lookaside. %ix/load 0, 1, 0; - %assign/v0 v0x22005f0_0, 0, 8; - %load/v 8, v0x22005f0_0, 1; + %ix/load 1, 7, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; + %load/v 8, v0x147ea30_0, 1; %ix/load 0, 1, 0; - %assign/v0 v0x2200690_0, 0, 8; + %ix/load 1, 0, 0; + %assign/v0/x1 v0x147ebb0_0, 0, 8; +T_1.6 ; + %load/v 8, v0x147ebb0_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x147e840_0, 0, 8; +T_1.4 ; + %jmp T_1; + .thread T_1; + .scope S_0x1463b00; +T_2 ; + %set/v v0x147eca0_0, 0, 1; + %end; + .thread T_2; + .scope S_0x1463b00; +T_3 ; + %delay 10, 0; + %load/v 8, v0x147eca0_0, 1; + %inv 8, 1; + %set/v v0x147eca0_0, 8, 1; %jmp T_3; .thread T_3; - .scope S_0x21b1730; + .scope S_0x1463b00; T_4 ; - %set/v v0x2200780_0, 0, 1; + %vpi_call 3 32 "$dumpfile", "shiftregister.vcd"; + %vpi_call 3 33 "$dumpvars"; + %vpi_call 3 36 "$display", "PIn? | PDataIn | SDataOut"; + %set/v v0x147eea0_0, 1, 1; + %movi 8, 31, 8; + %set/v v0x147ed40_0, 8, 8; + %delay 20, 0; + %vpi_call 3 38 "$display", "%b | %b | %b ", v0x147eea0_0, v0x147ed40_0, v0x147f0b0_0; + %set/v v0x147eea0_0, 1, 1; + %movi 8, 61, 8; + %set/v v0x147ed40_0, 8, 8; + %delay 20, 0; + %vpi_call 3 40 "$display", "%b | %b | %b", v0x147eea0_0, v0x147ed40_0, v0x147f0b0_0; + %set/v v0x147eea0_0, 1, 1; + %movi 8, 158, 8; + %set/v v0x147ed40_0, 8, 8; + %delay 20, 0; + %vpi_call 3 42 "$display", "%b | %b | %b", v0x147eea0_0, v0x147ed40_0, v0x147f0b0_0; + %vpi_call 3 46 "$display", "PIn? | PClock| SDataIn | PDataOut"; + %set/v v0x147eea0_0, 0, 1; + %set/v v0x147ef80_0, 1, 1; + %set/v v0x147f030_0, 1, 1; + %delay 20, 0; + %vpi_call 3 48 "$display", "%b | %b | \011%b \011| %b ", v0x147eea0_0, v0x147ef80_0, v0x147f030_0, v0x147edf0_0; + %set/v v0x147eea0_0, 0, 1; + %set/v v0x147ef80_0, 0, 1; + %set/v v0x147f030_0, 1, 1; + %delay 20, 0; + %vpi_call 3 50 "$display", "%b | %b | \011%b \011| %b ", v0x147eea0_0, v0x147ef80_0, v0x147f030_0, v0x147edf0_0; + %set/v v0x147eea0_0, 0, 1; + %set/v v0x147ef80_0, 1, 1; + %set/v v0x147f030_0, 0, 1; + %delay 20, 0; + %vpi_call 3 52 "$display", "%b | %b | \011%b\011| %b ", v0x147eea0_0, v0x147ef80_0, v0x147f030_0, v0x147edf0_0; + %set/v v0x147eea0_0, 0, 1; + %set/v v0x147ef80_0, 0, 1; + %set/v v0x147f030_0, 0, 1; + %delay 20, 0; + %vpi_call 3 54 "$display", "%b | %b | \011%b\011| %b ", v0x147eea0_0, v0x147ef80_0, v0x147f030_0, v0x147edf0_0; + %set/v v0x147eea0_0, 0, 1; + %set/v v0x147ef80_0, 1, 1; + %set/v v0x147f030_0, 0, 1; + %delay 20, 0; + %vpi_call 3 56 "$display", "%b | %b | \011%b\011| %b ", v0x147eea0_0, v0x147ef80_0, v0x147f030_0, v0x147edf0_0; + %vpi_call 3 59 "$finish"; %end; .thread T_4; - .scope S_0x21b1730; -T_5 ; - %delay 10, 0; - %load/v 8, v0x2200780_0, 1; - %inv 8, 1; - %set/v v0x2200780_0, 8, 1; - %jmp T_5; - .thread T_5; - .scope S_0x21b1730; -T_6 ; - %vpi_call 2 25 "$dumpfile", "inputconditioner.vcd"; - %vpi_call 2 26 "$dumpvars"; - %vpi_call 2 28 "$display", " clk | pin | conditioned | -edge| + edge"; - %set/v v0x2200980_0, 0, 1; - %delay 400, 0; - %vpi_call 2 30 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 100, 0; - %vpi_call 2 32 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 2, 0; - %vpi_call 2 34 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 100, 0; - %vpi_call 2 36 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 300, 0; - %vpi_call 2 38 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 3, 0; - %vpi_call 2 40 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 0, 1; - %delay 100, 0; - %vpi_call 2 42 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %set/v v0x2200980_0, 1, 1; - %delay 200, 0; - %vpi_call 2 44 "$display", "%b | %b | %b | %b | %b", v0x2200780_0, v0x2200980_0, v0x2200820_0, v0x2200a60_0, v0x22008d0_0; - %vpi_call 2 46 "$finish"; - %end; - .thread T_6; # The file index is used to find the file name in the following table. :file_names 4; "N/A"; ""; - "inputconditioner.t.v"; - "./inputconditioner.v"; + "./shiftregister.v"; + "shiftregister.t.v"; From b82cead14b38664d51771c081d02d111018d8304 Mon Sep 17 00:00:00 2001 From: mjakus Date: Tue, 24 Oct 2017 22:06:05 -0400 Subject: [PATCH 21/39] Editing tests and GTKWave --- .../Lab2Vivado.cache/wt/gui_resources.wdf | 30 ++ .../wt/java_command_handlers.wdf | 10 + Lab2Vivado/Lab2Vivado.cache/wt/project.wpc | 3 + Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf | 39 ++ .../Lab2Vivado.cache/wt/synthesis_details.wdf | 3 + Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml | 66 +++ Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr | 6 + .../Lab2Vivado.runs/.jobs/vrs_config_1.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_10.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_11.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_12.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_13.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_14.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_15.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_16.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_17.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_18.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_2.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_3.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_4.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_5.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_6.xml | 8 + .../Lab2Vivado.runs/.jobs/vrs_config_7.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_8.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_9.xml | 5 + .../impl_1/.Vivado_Implementation.queue.rst | 0 .../impl_1/.init_design.begin.rst | 5 + .../impl_1/.init_design.end.rst | 0 .../impl_1/.opt_design.begin.rst | 5 + .../impl_1/.opt_design.end.rst | 0 .../impl_1/.place_design.begin.rst | 5 + .../impl_1/.place_design.end.rst | 0 .../impl_1/.route_design.begin.rst | 5 + .../impl_1/.route_design.end.rst | 0 .../Lab2Vivado.runs/impl_1/.vivado.begin.rst | 10 + .../Lab2Vivado.runs/impl_1/.vivado.end.rst | 0 .../Lab2Vivado.runs/impl_1/.vivado.error.rst | 0 .../impl_1/.write_bitstream.begin.rst | 5 + .../impl_1/.write_bitstream.error.rst | 0 Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.js | 244 ++++++++++ Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.sh | 63 +++ Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml | 106 ++++ Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt | 9 + .../Lab2Vivado.runs/impl_1/init_design.pb | Bin 0 -> 7994 bytes .../Lab2Vivado.runs/impl_1/midpoint.tcl | 65 +++ .../Lab2Vivado.runs/impl_1/midpoint.vdi | 449 +++++++++++++++++ .../impl_1/midpoint_5313.backup.vdi | 387 +++++++++++++++ .../impl_1/midpoint_5832.backup.vdi | 388 +++++++++++++++ .../impl_1/midpoint_6218.backup.vdi | 400 +++++++++++++++ .../impl_1/midpoint_7034.backup.vdi | 454 ++++++++++++++++++ .../impl_1/midpoint_7379.backup.vdi | 397 +++++++++++++++ .../midpoint_clock_utilization_routed.rpt | 140 ++++++ .../impl_1/midpoint_control_sets_placed.rpt | 64 +++ .../impl_1/midpoint_drc_opted.rpt | 53 ++ .../impl_1/midpoint_drc_routed.pb | Bin 0 -> 37 bytes .../impl_1/midpoint_drc_routed.rpt | 53 ++ .../impl_1/midpoint_drc_routed.rpx | Bin 0 -> 5001 bytes .../impl_1/midpoint_io_placed.rpt | 442 +++++++++++++++++ .../midpoint_methodology_drc_routed.rpt | 175 +++++++ .../midpoint_methodology_drc_routed.rpx | Bin 0 -> 7608 bytes .../Lab2Vivado.runs/impl_1/midpoint_opt.dcp | Bin 0 -> 216509 bytes .../impl_1/midpoint_placed.dcp | Bin 0 -> 225191 bytes .../impl_1/midpoint_power_routed.rpt | 150 ++++++ .../impl_1/midpoint_power_routed.rpx | Bin 0 -> 22448 bytes .../impl_1/midpoint_power_summary_routed.pb | Bin 0 -> 722 bytes .../impl_1/midpoint_route_status.pb | Bin 0 -> 43 bytes .../impl_1/midpoint_route_status.rpt | 11 + .../impl_1/midpoint_routed.dcp | Bin 0 -> 230493 bytes .../impl_1/midpoint_timing_summary_routed.rpt | 173 +++++++ .../impl_1/midpoint_timing_summary_routed.rpx | Bin 0 -> 7171 bytes .../impl_1/midpoint_utilization_placed.pb | Bin 0 -> 224 bytes .../impl_1/midpoint_utilization_placed.rpt | 203 ++++++++ .../Lab2Vivado.runs/impl_1/opt_design.pb | Bin 0 -> 7604 bytes .../Lab2Vivado.runs/impl_1/place_design.pb | Bin 0 -> 12478 bytes Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf | 31 ++ .../Lab2Vivado.runs/impl_1/route_design.pb | Bin 0 -> 10356 bytes Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js | 44 ++ Lab2Vivado/Lab2Vivado.runs/impl_1/runme.bat | 11 + Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log | 447 +++++++++++++++++ Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh | 43 ++ Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou | 12 + Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb | 4 + .../impl_1/vivado_5832.backup.jou | 12 + .../impl_1/vivado_6218.backup.jou | 12 + .../impl_1/vivado_6346.backup.jou | 12 + .../impl_1/vivado_7034.backup.jou | 12 + .../impl_1/vivado_7379.backup.jou | 12 + .../Lab2Vivado.runs/impl_1/write_bitstream.pb | Bin 0 -> 7340 bytes .../synth_1/.Vivado_Synthesis.queue.rst | 0 .../synth_1/.Xil/midpoint_propImpl.xdc | 27 ++ .../Lab2Vivado.runs/synth_1/.vivado.begin.rst | 5 + .../Lab2Vivado.runs/synth_1/.vivado.end.rst | 0 Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.js | 244 ++++++++++ Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.sh | 63 +++ .../Lab2Vivado.runs/synth_1/gen_run.xml | 46 ++ Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt | 9 + .../Lab2Vivado.runs/synth_1/midpoint.dcp | Bin 0 -> 15803 bytes .../Lab2Vivado.runs/synth_1/midpoint.tcl | 35 ++ .../Lab2Vivado.runs/synth_1/midpoint.vds | 342 +++++++++++++ .../synth_1/midpoint_utilization_synth.pb | Bin 0 -> 224 bytes .../synth_1/midpoint_utilization_synth.rpt | 176 +++++++ .../Lab2Vivado.runs/synth_1/project.wdf | 31 ++ Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js | 40 ++ Lab2Vivado/Lab2Vivado.runs/synth_1/runme.bat | 11 + Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log | 341 +++++++++++++ Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh | 39 ++ Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou | 12 + Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.pb | Bin 0 -> 40234 bytes .../constrs_1/imports/Desktop/ZYBO_Master.xdc | 146 ++++++ .../sources_1/imports/Lab2/inputconditioner.v | 52 ++ .../sources_1/imports/Lab2/midpoint.v | 40 ++ .../sources_1/imports/Lab2/shiftregister.v | 79 +++ Lab2Vivado/Lab2Vivado.xpr | 146 ++++++ shiftregister.t.v | 57 ++- shiftregister.v | 46 +- shiftregister.vcd | 260 ++++++---- test | 153 ++++++ 117 files changed, 7598 insertions(+), 165 deletions(-) create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/project.wpc create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/synthesis_details.wdf create mode 100644 Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml create mode 100644 Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_1.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_10.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_11.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_12.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_13.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_14.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_15.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_16.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_17.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_18.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_2.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_3.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_4.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_5.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_6.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_7.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_8.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_9.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.Vivado_Implementation.queue.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.end.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.end.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.end.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.end.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.end.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.error.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst create mode 100755 Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.js create mode 100755 Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.sh create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/init_design.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5313.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5832.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_6218.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7034.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7379.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_io_placed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_summary_routed.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_timing_summary_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_timing_summary_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/opt_design.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/place_design.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/route_design.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/runme.bat create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log create mode 100755 Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_5832.backup.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6218.backup.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6346.backup.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7034.backup.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7379.backup.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/write_bitstream.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/.Vivado_Synthesis.queue.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/.Xil/midpoint_propImpl.xdc create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/.vivado.begin.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/.vivado.end.rst create mode 100755 Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.js create mode 100755 Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.sh create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/gen_run.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.tcl create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/project.wdf create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/runme.bat create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log create mode 100755 Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.pb create mode 100644 Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc create mode 100644 Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v create mode 100644 Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v create mode 100644 Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v create mode 100644 Lab2Vivado/Lab2Vivado.xpr create mode 100755 test diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf new file mode 100644 index 0000000..d9c64b0 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf @@ -0,0 +1,30 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:61646473726377697a6172645f737065636966795f68646c5f6e65746c6973745f626c6f636b5f64657369676e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:61646473726377697a6172645f737065636966795f6f725f6372656174655f636f6e73747261696e745f66696c6573:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f63616e63656c:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f6f6b:3434:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f796573:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:636f6e73747261696e747363686f6f73657270616e656c5f6164645f66696c6573:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6578707265706f72747472656570616e656c5f6578705f7265706f72745f747265655f7461626c65:3135:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:65787072756e7472656570616e656c5f6578705f72756e5f747265655f7461626c65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c6573657470616e656c5f66696c655f7365745f70616e656c5f74726565:3234:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c6573657470616e656c5f6d65737361676573:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c65736574766965775f657870616e645f616c6c:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:666c6f776e6176696761746f727472656570616e656c5f666c6f775f6e6176696761746f725f74726565:3237:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:67657474696e6773746172746564766965775f6372656174655f6e65775f70726f6a656374:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d73677472656570616e656c5f6d6573736167655f766965775f74726565:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6164645f736f7572636573:36:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f72756e5f62697467656e:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f7372635f656e61626c65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:706176696577735f7061725f7265706f7274:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061727463686f6f7365725f626f61726473:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563746e616d6563686f6f7365725f63686f6f73655f70726f6a6563745f6c6f636174696f6e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563746e616d6563686f6f7365725f70726f6a6563745f6e616d65:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563747461625f636c6f73655f64657369676e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563747461625f72656c6f6164:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:726469636f6d6d616e64735f64656c657465:35:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:72656d6f7665736f75726365736469616c6f675f616c736f5f64656c657465:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73726363686f6f73657270616e656c5f6164645f68646c5f616e645f6e65746c6973745f66696c65735f746f5f796f75725f70726f6a656374:37:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636167657474696e6773746172746564766965775f726563656e745f70726f6a65637473:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636173746174656d6f6e69746f725f63616e63656c:31:00:00 +eof:3662300466 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf new file mode 100644 index 0000000..494844c --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf @@ -0,0 +1,10 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:616464736f7572636573:36:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6564697464656c657465:35:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6e657770726f6a656374:31:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e62697467656e:37:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e696d706c656d656e746174696f6e:36:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e73796e746865736973:39:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:73686f7776696577:37:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:766965777461736b696d706c656d656e746174696f6e:32:00:00 +eof:4070236527 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc b/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc new file mode 100644 index 0000000..6888ede --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc @@ -0,0 +1,3 @@ +version:1 +6d6f64655f636f756e7465727c4755494d6f6465:2 +eof: diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf new file mode 100644 index 0000000..5fc9419 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf @@ -0,0 +1,39 @@ +version:1 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:7863377a303130636c673430302d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:6d6964706f696e74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e737472736574:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7365755f70726f74656374:64656661756c743a3a6e6f6e65:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d666c617474656e5f686965726172636879:64656661756c743a3a72656275696c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67617465645f636c6f636b5f636f6e76657273696f6e:64656661756c743a3a6f6666:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646972656374697665:64656661756c743a3a64656661756c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f6970:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f636f6e73747261696e7473:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f6c63:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d62756667:64656661756c743a3a3132:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66616e6f75745f6c696d6974:64656661756c743a3a3130303030:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73687265675f6d696e5f73697a65:64656661756c743a3a33:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d6f6465:64656661756c743a3a64656661756c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66736d5f65787472616374696f6e:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6b6565705f6571756976616c656e745f726567697374657273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7265736f757263655f73686172696e67:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636173636164655f647370:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e74726f6c5f7365745f6f70745f7468726573686f6c64:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f647370:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f73726c65787472616374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a313973:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:313436362e3034374d42:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3338302e3939324d42:00:00 +eof:1751154294 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/synthesis_details.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis_details.wdf new file mode 100644 index 0000000..78f8d66 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis_details.wdf @@ -0,0 +1,3 @@ +version:1 +73796e746865736973:73796e7468657369735c7573616765:686c735f6970:30:00:00 +eof:2511430288 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml b/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml new file mode 100644 index 0000000..4e9d88e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml @@ -0,0 +1,66 @@ + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr b/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr new file mode 100644 index 0000000..d20a952 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr @@ -0,0 +1,6 @@ + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_1.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_1.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_1.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_10.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_10.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_10.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_11.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_11.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_11.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_12.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_12.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_12.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_13.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_13.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_13.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_14.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_14.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_14.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_15.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_15.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_15.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_16.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_16.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_16.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_17.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_17.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_17.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_18.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_18.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_18.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_2.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_2.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_2.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_3.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_3.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_3.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_4.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_4.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_4.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_5.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_5.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_5.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_6.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_6.xml new file mode 100644 index 0000000..50c1caf --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_6.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_7.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_7.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_7.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_8.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_8.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_8.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_9.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_9.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_9.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.Vivado_Implementation.queue.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.Vivado_Implementation.queue.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst new file mode 100644 index 0000000..430b473 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.end.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst new file mode 100644 index 0000000..430b473 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.end.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst new file mode 100644 index 0000000..430b473 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.end.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst new file mode 100644 index 0000000..430b473 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.end.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst new file mode 100644 index 0000000..766a83e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.end.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.error.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.error.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst new file mode 100644 index 0000000..9b54380 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.js b/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.js new file mode 100755 index 0000000..8284d2d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.js @@ -0,0 +1,244 @@ +// +// Vivado(TM) +// ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6 +// Copyright 1986-1999, 2001-2013,2015 Xilinx, Inc. All Rights Reserved. +// + +// GLOBAL VARIABLES +var ISEShell = new ActiveXObject( "WScript.Shell" ); +var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" ); +var ISERunDir = ""; +var ISELogFile = "runme.log"; +var ISELogFileStr = null; +var ISELogEcho = true; +var ISEOldVersionWSH = false; + + + +// BOOTSTRAP +ISEInit(); + + + +// +// ISE FUNCTIONS +// +function ISEInit() { + + // 1. RUN DIR setup + var ISEScrFP = WScript.ScriptFullName; + var ISEScrN = WScript.ScriptName; + ISERunDir = + ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 ); + + // 2. LOG file setup + ISELogFileStr = ISEOpenFile( ISELogFile ); + + // 3. LOG echo? + var ISEScriptArgs = WScript.Arguments; + for ( var loopi=0; loopi> " + ISELogFile + " 2>&1"; + ISEExitCode = ISEShell.Run( ISECmdLine, 0, true ); + ISELogFileStr = ISEOpenFile( ISELogFile ); + + } else { // WSH 5.6 + + // LAUNCH! + ISEShell.CurrentDirectory = ISERunDir; + + // Redirect STDERR to STDOUT + ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1"; + var ISEProcess = ISEShell.Exec( ISECmdLine ); + + // BEGIN file creation + var ISENetwork = WScript.CreateObject( "WScript.Network" ); + var ISEHost = ISENetwork.ComputerName; + var ISEUser = ISENetwork.UserName; + var ISEPid = ISEProcess.ProcessID; + var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.WriteLine( " " ); + ISEBeginFile.WriteLine( " " ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.Close(); + + var ISEOutStr = ISEProcess.StdOut; + var ISEErrStr = ISEProcess.StdErr; + + // WAIT for ISEStep to finish + while ( ISEProcess.Status == 0 ) { + + // dump stdout then stderr - feels a little arbitrary + while ( !ISEOutStr.AtEndOfStream ) { + ISEStdOut( ISEOutStr.ReadLine() ); + } + + WScript.Sleep( 100 ); + } + + ISEExitCode = ISEProcess.ExitCode; + } + + ISELogFileStr.Close(); + + // END/ERROR file creation + if ( ISEExitCode != 0 ) { + ISETouchFile( ISEStep, "error" ); + + } else { + ISETouchFile( ISEStep, "end" ); + } + + return ISEExitCode; +} + + +// +// UTILITIES +// +function ISEStdOut( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdOut.WriteLine( ISELine ); + } +} + +function ISEStdErr( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdErr.WriteLine( ISELine ); + } +} + +function ISETouchFile( ISERoot, ISEStatus ) { + + var ISETFile = + ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" ); + ISETFile.Close(); +} + +function ISEOpenFile( ISEFilename ) { + + // This function has been updated to deal with a problem seen in CR #870871. + // In that case the user runs a script that runs impl_1, and then turns around + // and runs impl_1 -to_step write_bitstream. That second run takes place in + // the same directory, which means we may hit some of the same files, and in + // particular, we will open the runme.log file. Even though this script closes + // the file (now), we see cases where a subsequent attempt to open the file + // fails. Perhaps the OS is slow to release the lock, or the disk comes into + // play? In any case, we try to work around this by first waiting if the file + // is already there for an arbitrary 5 seconds. Then we use a try-catch block + // and try to open the file 10 times with a one second delay after each attempt. + // Again, 10 is arbitrary. But these seem to stop the hang in CR #870871. + // If there is an unrecognized exception when trying to open the file, we output + // an error message and write details to an exception.log file. + var ISEFullPath = ISERunDir + "/" + ISEFilename; + if (ISEFileSys.FileExists(ISEFullPath)) { + // File is already there. This could be a problem. Wait in case it is still in use. + WScript.Sleep(5000); + } + var i; + for (i = 0; i < 10; ++i) { + try { + return ISEFileSys.OpenTextFile(ISEFullPath, 8, true); + } catch (exception) { + var error_code = exception.number & 0xFFFF; // The other bits are a facility code. + if (error_code == 52) { // 52 is bad file name or number. + // Wait a second and try again. + WScript.Sleep(1000); + continue; + } else { + WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + var exceptionFilePath = ISERunDir + "/exception.log"; + if (!ISEFileSys.FileExists(exceptionFilePath)) { + WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details."); + var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true); + exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + exceptionFile.WriteLine("\tException name: " + exception.name); + exceptionFile.WriteLine("\tException error code: " + error_code); + exceptionFile.WriteLine("\tException message: " + exception.message); + exceptionFile.Close(); + } + throw exception; + } + } + } + // If we reached this point, we failed to open the file after 10 attempts. + // We need to error out. + WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath); + WScript.Quit(1); +} diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.sh b/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.sh new file mode 100755 index 0000000..e1a8f5d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/ISEWrap.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# +# Vivado(TM) +# ISEWrap.sh: Vivado Runs Script for UNIX +# Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved. +# + +HD_LOG=$1 +shift + +# CHECK for a STOP FILE +if [ -f .stop.rst ] +then +echo "" >> $HD_LOG +echo "*** Halting run - EA reset detected ***" >> $HD_LOG +echo "" >> $HD_LOG +exit 1 +fi + +ISE_STEP=$1 +shift + +# WRITE STEP HEADER to LOG +echo "" >> $HD_LOG +echo "*** Running $ISE_STEP" >> $HD_LOG +echo " with args $@" >> $HD_LOG +echo "" >> $HD_LOG + +# LAUNCH! +$ISE_STEP "$@" >> $HD_LOG 2>&1 & + +# BEGIN file creation +ISE_PID=$! +if [ X != X$HOSTNAME ] +then +ISE_HOST=$HOSTNAME #bash +else +ISE_HOST=$HOST #csh +fi +ISE_USER=$USER +ISE_BEGINFILE=.$ISE_STEP.begin.rst +/bin/touch $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE +echo " " >> $ISE_BEGINFILE +echo " " >> $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE + +# WAIT for ISEStep to finish +wait $ISE_PID + +# END/ERROR file creation +RETVAL=$? +if [ $RETVAL -eq 0 ] +then + /bin/touch .$ISE_STEP.end.rst +else + /bin/touch .$ISE_STEP.error.rst +fi + +exit $RETVAL + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml b/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml new file mode 100644 index 0000000..f411fe5 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt b/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt new file mode 100644 index 0000000..0670d3b --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt @@ -0,0 +1,9 @@ +# +# Vivado(TM) +# htr.txt: a Vivado-generated description of how-to-repeat the +# the basic steps of a run. Note that runme.bat/sh needs +# to be invoked for Vivado to track run status. +# Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +# + +vivado -log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/init_design.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/init_design.pb new file mode 100644 index 0000000000000000000000000000000000000000..98858553f17913d94a30f068e54bc8f1d0d5238b GIT binary patch literal 7994 zcmeI1O>Y`U7{{|~IL=(1FmnwREMJGI&*Y8^$^cy|nA@0(^8 z8~af8(tAErul*GL7VWLi084RTky3Hk!%7Ij?9TJ-^Pk@=&+oXyc7>tx`ZI=*zTJP8g_IUd`5iE8Fy(71`SJ*^W{DVZgkLOI=M>;TM5W!pGd> zJ`ZArk3)$ihkBgx0IHOB3dE{y20ZqJis?;MAaqG#C2H4+uB$XEC3Vqh@aK{R3Ih8q z7GZ#$(2qPGa~F$1U&7=47g%wq!v#el9qs;??n7jlDcNXuKHCU=_H1&A_?#*1NX~SI za}f`8j;eylMQW4UW+cNC?!2cYa}fHxsh5mNXV3&vPvbCZ?uLC9?6M=;oV`uN9DkpDZ0MZ=Q^yP+lBV#Z zP{wK&gxY4yGKekYY_7WVkz^BnR3ah-5Zf3m_?TgL4k|8)q!*Ma-f{EY^ z{{H9kzIvdYOc?RNx5AMKU<6D9FyHKMtq8UfU2eRk3?GzRq)u8_47p#?o#po5Peb2l z@}h?(o*W@_o}7)UVC=l@NuG1bah#Zl+-;ym14FxA5DH448IXS!kgTfb!si&u>tQDv z;%{`(UxVGrA_WUP{@TEM+z;gizQ6YfPK!7@P0s5xuqdZvFW3)*r xZIJe|z_(D5*vk&wMjON??ZtTDM_F}?Qc!t&v_0{oK0xTZz{Nj;fh*mL@h{t8t406- literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl new file mode 100644 index 0000000..4a25b7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl @@ -0,0 +1,65 @@ +proc start_step { step } { + set stopFile ".stop.rst" + if {[file isfile .stop.rst]} { + puts "" + puts "*** Halting run - EA reset detected ***" + puts "" + puts "" + return -code error + } + set beginFile ".$step.begin.rst" + set platform "$::tcl_platform(platform)" + set user "$::tcl_platform(user)" + set pid [pid] + set host "" + if { [string equal $platform unix] } { + if { [info exist ::env(HOSTNAME)] } { + set host $::env(HOSTNAME) + } + } else { + if { [info exist ::env(COMPUTERNAME)] } { + set host $::env(COMPUTERNAME) + } + } + set ch [open $beginFile w] + puts $ch "" + puts $ch "" + puts $ch " " + puts $ch " " + puts $ch "" + close $ch +} + +proc end_step { step } { + set endFile ".$step.end.rst" + set ch [open $endFile w] + close $ch +} + +proc step_failed { step } { + set endFile ".$step.error.rst" + set ch [open $endFile w] + close $ch +} + + +start_step write_bitstream +set ACTIVE_STEP write_bitstream +set rc [catch { + create_msg_db write_bitstream.pb + open_checkpoint midpoint_routed.dcp + set_property webtalk.parent_dir /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.cache/wt [current_project] + catch { write_mem_info -force midpoint.mmi } + write_bitstream -force midpoint.bit + catch {write_debug_probes -no_partial_ltxfile -quiet -force debug_nets} + catch {file copy -force debug_nets.ltx midpoint.ltx} + close_msg_db -file write_bitstream.pb +} RESULT] +if {$rc} { + step_failed write_bitstream + return -code error $RESULT +} else { + end_step write_bitstream + unset ACTIVE_STEP +} + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi new file mode 100644 index 0000000..c7c1288 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi @@ -0,0 +1,449 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:06:42 2017 +# Process ID: 7379 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 195 ; free virtual = 1914 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 192 ; free virtual = 1911 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1539 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 96 ; free virtual = 1539 +20 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:20 . Memory (MB): peak = 1778.695 ; gain = 471.496 ; free physical = 96 ; free virtual = 1539 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 93 ; free virtual = 1539 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1525 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1525 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1523 +29 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1524 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.35 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 82 ; free virtual = 1515 +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.23 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +report_control_sets: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1823.699 ; gain = 37.000 ; free physical = 72 ; free virtual = 1430 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 83 ; free virtual = 1421 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 82 ; free virtual = 1422 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 87 ; free virtual = 1428 + +Routing Is Done. +35 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:10 ; elapsed = 00:00:24 . Memory (MB): peak = 1868.590 ; gain = 81.891 ; free physical = 82 ; free virtual = 1428 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1868.590 ; gain = 0.000 ; free physical = 79 ; free virtual = 1428 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 14 Warnings, 12 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:08:11 2017... +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:08:26 2017 +# Process ID: 7508 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Command: open_checkpoint midpoint_routed.dcp + +Starting open_checkpoint Task + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1083.047 ; gain = 0.000 ; free physical = 549 ; free virtual = 2131 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-7508-comparch-VirtualBox/dcp3/midpoint.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-7508-comparch-VirtualBox/dcp3/midpoint.xdc] +Reading XDEF placement. +Reading placer database... +Reading XDEF routing. +Read XDEF File: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.207 ; gain = 0.000 ; free physical = 240 ; free virtual = 1865 +Restored from archive | CPU: 0.020000 secs | Memory: 0.070175 MB | +Finished XDEF File Restore: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.207 ; gain = 0.000 ; free physical = 240 ; free virtual = 1865 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +INFO: [Project 1-604] Checkpoint was created with Vivado v2017.2 (64-bit) build 1909853 +open_checkpoint: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1304.207 ; gain = 221.160 ; free physical = 244 ; free virtual = 1867 +Command: write_bitstream -force midpoint.bit +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command write_bitstream +Command: report_drc (run_mandatory_drcs) for: bitstream_checks +ERROR: [DRC NSTD-1] Unspecified I/O Standard: 19 out of 20 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, and button. +ERROR: [DRC UCIO-1] Unconstrained Logical Port: 19 out of 20 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, and button. +WARNING: [DRC ZPS7-1] PS7 block required: The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado 12-3199] DRC finished with 2 Errors, 1 Warnings +INFO: [Vivado 12-3200] Please refer to the DRC report (report_drc) for more information. +ERROR: [Vivado 12-1345] Error(s) found during DRC. Bitgen not run. +10 Infos, 1 Warnings, 0 Critical Warnings and 3 Errors encountered. +write_bitstream failed +ERROR: [Common 17-39] 'write_bitstream' failed due to earlier errors. + +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:09:06 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5313.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5313.backup.vdi new file mode 100644 index 0000000..0292db6 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5313.backup.vdi @@ -0,0 +1,387 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:30:07 2017 +# Process ID: 5313 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:04 ; elapsed = 00:00:08 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 80 ; free virtual = 1904 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.15 ; elapsed = 00:00:00.41 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 77 ; free virtual = 1902 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 87 ; free virtual = 1553 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.30 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 86 ; free virtual = 1553 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.32 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 85 ; free virtual = 1553 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 85 ; free virtual = 1553 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 85 ; free virtual = 1553 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 85 ; free virtual = 1553 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 85 ; free virtual = 1553 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.13 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 83 ; free virtual = 1552 +20 Infos, 8 Warnings, 8 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.695 ; gain = 471.496 ; free physical = 82 ; free virtual = 1552 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 71 ; free virtual = 1551 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +report_drc: Time (s): cpu = 00:00:01 ; elapsed = 00:00:05 . Memory (MB): peak = 1786.699 ; gain = 8.004 ; free physical = 82 ; free virtual = 1546 +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1545 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1545 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1545 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 65 ; free virtual = 1545 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.47 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1540 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.48 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1540 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.48 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1540 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1539 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1539 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 69 ; free virtual = 1539 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 69 ; free virtual = 1539 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.53 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 69 ; free virtual = 1539 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 1525 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 1525 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 1525 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 1525 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 1525 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.58 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.58 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.59 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.59 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.60 ; elapsed = 00:00:04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 82 ; free virtual = 1527 +29 Infos, 9 Warnings, 8 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.08 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1525 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.23 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 98 ; free virtual = 1527 +report_utilization: Time (s): cpu = 00:00:00.08 ; elapsed = 00:00:00.20 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 103 ; free virtual = 1534 +report_control_sets: Time (s): cpu = 00:00:00.06 ; elapsed = 00:00:00.13 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 101 ; free virtual = 1534 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:14 . Memory (MB): peak = 1823.699 ; gain = 37.000 ; free physical = 70 ; free virtual = 1461 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:14 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 85 ; free virtual = 1469 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:14 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 85 ; free virtual = 1469 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:14 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1464 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 79 ; free virtual = 1465 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 78 ; free virtual = 1465 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 77 ; free virtual = 1464 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 77 ; free virtual = 1465 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 82 ; free virtual = 1470 + +Routing Is Done. +35 Infos, 9 Warnings, 8 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1868.590 ; gain = 81.891 ; free physical = 76 ; free virtual = 1470 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1868.590 ; gain = 0.000 ; free physical = 74 ; free virtual = 1470 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 10 Warnings, 8 Critical Warnings and 0 Errors encountered. +report_power completed successfully +report_power: Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:07 . Memory (MB): peak = 1928.531 ; gain = 0.000 ; free physical = 90 ; free virtual = 1333 +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 19:31:33 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5832.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5832.backup.vdi new file mode 100644 index 0000000..d99cdc1 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_5832.backup.vdi @@ -0,0 +1,388 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:40:37 2017 +# Process ID: 5832 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:10 . Memory (MB): peak = 1307.207 ; gain = 222.145 ; free physical = 78 ; free virtual = 1222 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.30 . Memory (MB): peak = 1316.211 ; gain = 9.004 ; free physical = 76 ; free virtual = 1222 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 96 ; free virtual = 797 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 94 ; free virtual = 797 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 93 ; free virtual = 797 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 92 ; free virtual = 797 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 92 ; free virtual = 797 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 92 ; free virtual = 797 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:14 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 92 ; free virtual = 797 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:00.13 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 89 ; free virtual = 797 +20 Infos, 9 Warnings, 9 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:41 . Memory (MB): peak = 1778.703 ; gain = 471.496 ; free physical = 86 ; free virtual = 797 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1778.703 ; gain = 0.000 ; free physical = 71 ; free virtual = 796 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 807 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 807 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 807 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:00.89 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 78 ; free virtual = 822 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:00.97 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 75 ; free virtual = 821 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:00.98 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 74 ; free virtual = 821 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:00.98 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 74 ; free virtual = 821 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 820 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 820 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 820 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 820 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 69 ; free virtual = 820 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 84 ; free virtual = 836 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 85 ; free virtual = 837 +29 Infos, 10 Warnings, 9 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 83 ; free virtual = 837 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.05 ; elapsed = 00:00:00.08 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 75 ; free virtual = 828 +report_utilization: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 82 ; free virtual = 836 +report_control_sets: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.707 ; gain = 0.000 ; free physical = 82 ; free virtual = 836 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:15 . Memory (MB): peak = 1823.707 ; gain = 37.000 ; free physical = 80 ; free virtual = 744 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:16 . Memory (MB): peak = 1826.707 ; gain = 40.000 ; free physical = 69 ; free virtual = 740 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:16 . Memory (MB): peak = 1826.707 ; gain = 40.000 ; free physical = 69 ; free virtual = 740 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 75 ; free virtual = 745 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 745 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 746 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 746 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 746 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 746 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 76 ; free virtual = 746 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1832.707 ; gain = 46.000 ; free physical = 75 ; free virtual = 746 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1834.707 ; gain = 48.000 ; free physical = 75 ; free virtual = 745 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1834.707 ; gain = 48.000 ; free physical = 75 ; free virtual = 746 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:17 . Memory (MB): peak = 1834.707 ; gain = 48.000 ; free physical = 81 ; free virtual = 751 + +Routing Is Done. +35 Infos, 10 Warnings, 9 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:19 . Memory (MB): peak = 1868.598 ; gain = 81.891 ; free physical = 72 ; free virtual = 751 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1868.598 ; gain = 0.000 ; free physical = 70 ; free virtual = 751 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 11 Warnings, 9 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 19:42:18 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_6218.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_6218.backup.vdi new file mode 100644 index 0000000..74938a4 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_6218.backup.vdi @@ -0,0 +1,400 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:47:26 2017 +# Process ID: 6218 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:04 ; elapsed = 00:00:08 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 74 ; free virtual = 1217 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.21 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 72 ; free virtual = 1215 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.24 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 91 ; free virtual = 852 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.27 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 89 ; free virtual = 852 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.28 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 89 ; free virtual = 852 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.31 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 87 ; free virtual = 852 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.31 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 87 ; free virtual = 852 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 87 ; free virtual = 852 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.32 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 87 ; free virtual = 852 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 84 ; free virtual = 852 +20 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:32 . Memory (MB): peak = 1778.695 ; gain = 471.496 ; free physical = 80 ; free virtual = 851 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 77 ; free virtual = 826 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +write_checkpoint: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:13 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 74 ; free virtual = 826 +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +report_drc: Time (s): cpu = 00:00:01 ; elapsed = 00:00:12 . Memory (MB): peak = 1786.699 ; gain = 8.004 ; free physical = 71 ; free virtual = 840 +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 834 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 834 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 834 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:27 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 91 ; free virtual = 807 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:29 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 85 ; free virtual = 806 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:29 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 85 ; free virtual = 806 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:29 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 84 ; free virtual = 806 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:31 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 803 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.52 ; elapsed = 00:00:31 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 803 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.53 ; elapsed = 00:00:31 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 803 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.53 ; elapsed = 00:00:31 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 803 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.53 ; elapsed = 00:00:31 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 803 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 802 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.57 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 802 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.58 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 802 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.58 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 802 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.58 ; elapsed = 00:00:32 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 802 +29 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +place_design completed successfully +place_design: Time (s): cpu = 00:00:00.74 ; elapsed = 00:00:36 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 803 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 805 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.06 ; elapsed = 00:00:00.27 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 804 +report_utilization: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.17 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 812 +report_control_sets: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 812 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:42 . Memory (MB): peak = 1823.699 ; gain = 37.000 ; free physical = 85 ; free virtual = 684 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:43 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 74 ; free virtual = 682 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:43 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 74 ; free virtual = 682 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:08 ; elapsed = 00:00:43 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 677 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 67 ; free virtual = 679 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 66 ; free virtual = 678 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 64 ; free virtual = 679 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:44 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 70 ; free virtual = 685 + +Routing Is Done. +35 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:46 . Memory (MB): peak = 1868.590 ; gain = 81.891 ; free physical = 78 ; free virtual = 692 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1868.590 ; gain = 0.000 ; free physical = 83 ; free virtual = 699 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 14 Warnings, 12 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 19:50:23 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7034.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7034.backup.vdi new file mode 100644 index 0000000..a908b21 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7034.backup.vdi @@ -0,0 +1,454 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:02:36 2017 +# Process ID: 7034 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1312.199 ; gain = 227.145 ; free physical = 79 ; free virtual = 1943 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.14 ; elapsed = 00:00:00.57 . Memory (MB): peak = 1324.203 ; gain = 12.004 ; free physical = 76 ; free virtual = 1942 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.09 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 109 ; free virtual = 1534 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.12 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 108 ; free virtual = 1534 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.15 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 107 ; free virtual = 1534 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.16 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 107 ; free virtual = 1534 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.16 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 107 ; free virtual = 1534 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.01 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 106 ; free virtual = 1534 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.17 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 106 ; free virtual = 1534 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 104 ; free virtual = 1534 +20 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:22 . Memory (MB): peak = 1786.695 ; gain = 474.496 ; free physical = 104 ; free virtual = 1534 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1786.695 ; gain = 0.000 ; free physical = 92 ; free virtual = 1533 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 81 ; free virtual = 1525 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 80 ; free virtual = 1525 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.35 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 68 ; free virtual = 1524 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 23ce6ea02 + +Time (s): cpu = 00:00:00.37 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 83 ; free virtual = 1543 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 23ce6ea02 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 83 ; free virtual = 1543 +Phase 1 Placer Initialization | Checksum: 23ce6ea02 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 83 ; free virtual = 1543 + +Phase 2 Global Placement +Phase 2 Global Placement | Checksum: 17987845c + +Time (s): cpu = 00:00:00.42 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1541 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 17987845c + +Time (s): cpu = 00:00:00.42 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1541 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 162d53c3f + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1541 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 177f4866c + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1541 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 177f4866c + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1541 + +Phase 3.5 Timing Path Optimizer +Phase 3.5 Timing Path Optimizer | Checksum: 233124ccf + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:01 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1541 + +Phase 3.6 Small Shape Detail Placement +Phase 3.6 Small Shape Detail Placement | Checksum: 1d7b30395 + +Time (s): cpu = 00:00:00.47 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1540 + +Phase 3.7 Re-assign LUT pins +Phase 3.7 Re-assign LUT pins | Checksum: 1d7b30395 + +Time (s): cpu = 00:00:00.47 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1540 + +Phase 3.8 Pipeline Register Optimization +Phase 3.8 Pipeline Register Optimization | Checksum: 1d7b30395 + +Time (s): cpu = 00:00:00.48 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1540 +Phase 3 Detail Placement | Checksum: 1d7b30395 + +Time (s): cpu = 00:00:00.48 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1540 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Phase 4.1.1 Post Placement Optimization +Post Placement Optimization Initialization | Checksum: 1b1f92d3d + +Phase 4.1.1.1 BUFG Insertion +INFO: [Physopt 32-721] Multithreading enabled for phys_opt_design using a maximum of 1 CPUs +INFO: [Place 46-41] BUFG insertion identified 0 candidate nets, 0 success, 0 skipped for placement/routing, 0 skipped for timing, 0 skipped for netlist change reason. +Phase 4.1.1.1 BUFG Insertion | Checksum: 1b1f92d3d + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 66 ; free virtual = 1540 +INFO: [Place 30-746] Post Placement Timing Summary WNS=5.664. For the most accurate timing information please run report_timing. +Phase 4.1.1 Post Placement Optimization | Checksum: 2540cdd14 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 66 ; free virtual = 1540 +Phase 4.1 Post Commit Optimization | Checksum: 2540cdd14 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 66 ; free virtual = 1540 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 2540cdd14 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 64 ; free virtual = 1540 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 2540cdd14 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 64 ; free virtual = 1540 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 232e3dea8 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 64 ; free virtual = 1540 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 232e3dea8 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 64 ; free virtual = 1540 +Ending Placer Task | Checksum: 1525aad13 + +Time (s): cpu = 00:00:00.55 ; elapsed = 00:00:02 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1548 +33 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1550 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.14 ; elapsed = 00:00:00.86 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1528 +report_utilization: Time (s): cpu = 00:00:00.08 ; elapsed = 00:00:00.26 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 92 ; free virtual = 1534 +report_control_sets: Time (s): cpu = 00:00:00.08 ; elapsed = 00:00:00.49 . Memory (MB): peak = 1794.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1535 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: aa9501e9 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 10877f5e3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 71 ; free virtual = 1435 + +Phase 2 Router Initialization + +Phase 2.1 Create Timer +Phase 2.1 Create Timer | Checksum: 10877f5e3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 69 ; free virtual = 1435 + +Phase 2.2 Fix Topology Constraints +Phase 2.2 Fix Topology Constraints | Checksum: 10877f5e3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 96 ; free virtual = 1445 + +Phase 2.3 Pre Route Cleanup +Phase 2.3 Pre Route Cleanup | Checksum: 10877f5e3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 96 ; free virtual = 1445 + Number of Nodes with overlaps = 0 + +Phase 2.4 Update Timing +Phase 2.4 Update Timing | Checksum: 1b1e2f106 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 84 ; free virtual = 1441 +INFO: [Route 35-416] Intermediate Timing Summary | WNS=5.594 | TNS=0.000 | WHS=-0.076 | THS=-0.844 | + +Phase 2 Router Initialization | Checksum: 1de39a806 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 82 ; free virtual = 1440 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: 19cbcfada + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +INFO: [Route 35-416] Intermediate Timing Summary | WNS=5.781 | TNS=0.000 | WHS=N/A | THS=N/A | + +Phase 4.1 Global Iteration 0 | Checksum: 14dea0fea + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 4.2 Global Iteration 1 + Number of Nodes with overlaps = 0 +INFO: [Route 35-416] Intermediate Timing Summary | WNS=5.781 | TNS=0.000 | WHS=N/A | THS=N/A | + +Phase 4.2 Global Iteration 1 | Checksum: ff6c7ae1 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 +Phase 4 Rip-up And Reroute | Checksum: ff6c7ae1 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 5 Delay and Skew Optimization + +Phase 5.1 Delay CleanUp +Phase 5.1 Delay CleanUp | Checksum: ff6c7ae1 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 5.2 Clock Skew Optimization +Phase 5.2 Clock Skew Optimization | Checksum: ff6c7ae1 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 +Phase 5 Delay and Skew Optimization | Checksum: ff6c7ae1 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter + +Phase 6.1.1 Update Timing +Phase 6.1.1 Update Timing | Checksum: 13f0058ed + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 +INFO: [Route 35-416] Intermediate Timing Summary | WNS=5.934 | TNS=0.000 | WHS=0.182 | THS=0.000 | + +Phase 6.1 Hold Fix Iter | Checksum: 10c687568 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 +Phase 6 Post Hold Fix | Checksum: 10c687568 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0143581 % + Global Horizontal Routing Utilization = 0.0147059 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Phase 7 Route finalize | Checksum: 10c687568 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 78 ; free virtual = 1442 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 10c687568 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 77 ; free virtual = 1441 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: 18f291c0e + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 76 ; free virtual = 1441 + +Phase 10 Post Router Timing +INFO: [Route 35-57] Estimated Timing Summary | WNS=5.934 | TNS=0.000 | WHS=0.182 | THS=0.000 | + +INFO: [Route 35-327] The final timing numbers are based on the router estimated timing analysis. For a complete and accurate timing signoff, please run report_timing_summary. +Phase 10 Post Router Timing | Checksum: 18f291c0e + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 77 ; free virtual = 1442 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1857.699 ; gain = 63.000 ; free physical = 81 ; free virtual = 1447 + +Routing Is Done. +44 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:18 . Memory (MB): peak = 1891.590 ; gain = 96.891 ; free physical = 71 ; free virtual = 1444 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1891.590 ; gain = 0.000 ; free physical = 66 ; free virtual = 1444 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +49 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:04:12 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7379.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7379.backup.vdi new file mode 100644 index 0000000..7a98387 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_7379.backup.vdi @@ -0,0 +1,397 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:06:42 2017 +# Process ID: 7379 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 195 ; free virtual = 1914 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 192 ; free virtual = 1911 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1539 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 96 ; free virtual = 1539 +20 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:20 . Memory (MB): peak = 1778.695 ; gain = 471.496 ; free physical = 96 ; free virtual = 1539 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 93 ; free virtual = 1539 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1525 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1525 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1523 +29 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1524 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.35 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 82 ; free virtual = 1515 +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.23 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +report_control_sets: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1823.699 ; gain = 37.000 ; free physical = 72 ; free virtual = 1430 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 83 ; free virtual = 1421 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 82 ; free virtual = 1422 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 87 ; free virtual = 1428 + +Routing Is Done. +35 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:10 ; elapsed = 00:00:24 . Memory (MB): peak = 1868.590 ; gain = 81.891 ; free physical = 82 ; free virtual = 1428 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1868.590 ; gain = 0.000 ; free physical = 79 ; free virtual = 1428 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 14 Warnings, 12 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:08:11 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt new file mode 100644 index 0000000..6a32897 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt @@ -0,0 +1,140 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +-------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Tue Oct 24 20:08:10 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_clock_utilization -file midpoint_clock_utilization_routed.rpt +| Design : midpoint +| Device : 7z010-clg400 +| Speed File : -1 PRODUCTION 1.11 2014-09-11 +-------------------------------------------------------------------------------------- + +Clock Utilization Report + +Table of Contents +----------------- +1. Clock Primitive Utilization +2. Global Clock Resources +3. Global Clock Source Details +4. Clock Regions: Key Resource Utilization +5. Clock Regions : Global Clock Summary +6. Device Cell Placement Summary for Global Clock g0 +7. Clock Region Cell Placement per Global Clock: Region X1Y0 + +1. Clock Primitive Utilization +------------------------------ + ++----------+------+-----------+-----+--------------+--------+ +| Type | Used | Available | LOC | Clock Region | Pblock | ++----------+------+-----------+-----+--------------+--------+ +| BUFGCTRL | 1 | 32 | 0 | 0 | 0 | +| BUFH | 0 | 48 | 0 | 0 | 0 | +| BUFIO | 0 | 8 | 0 | 0 | 0 | +| BUFMR | 0 | 4 | 0 | 0 | 0 | +| BUFR | 0 | 8 | 0 | 0 | 0 | +| MMCM | 0 | 2 | 0 | 0 | 0 | +| PLL | 0 | 2 | 0 | 0 | 0 | ++----------+------+-----------+-----+--------------+--------+ + + +2. Global Clock Resources +------------------------- + ++-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +| Global Id | Source Id | Driver Type/Pin | Constraint | Site | Clock Region | Load Clock Region | Clock Loads | Non-Clock Loads | Clock Period | Clock | Driver Pin | Net | ++-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +| g0 | src0 | BUFG/O | None | BUFGCTRL_X0Y16 | n/a | 1 | 28 | 0 | | | clk_IBUF_BUFG_inst/O | clk_IBUF_BUFG | ++-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) + + +3. Global Clock Source Details +------------------------------ + ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +| Source Id | Global Id | Driver Type/Pin | Constraint | Site | Clock Region | Clock Loads | Non-Clock Loads | Source Clock Period | Source Clock | Driver Pin | Net | ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +| src0 | g0 | IBUF/O | IOB_X0Y78 | IOB_X0Y78 | X1Y1 | 1 | 0 | | | clk_IBUF_inst/O | clk_IBUF | ++-----------+-----------+-----------------+------------+-----------+--------------+-------------+-----------------+---------------------+--------------+-----------------+----------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) + + +4. Clock Regions: Key Resource Utilization +------------------------------------------ + ++-------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ +| | Global Clock | BUFRs | BUFMRs | BUFIOs | MMCM | PLL | GT | PCI | ILOGIC | OLOGIC | FF | LUTM | RAMB18 | RAMB36 | DSP48E2 | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +| Clock Region Name | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +| X0Y0 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1100 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 | +| X1Y0 | 1 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 28 | 1100 | 10 | 350 | 0 | 40 | 0 | 20 | 0 | 20 | +| X0Y1 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1100 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 | +| X1Y1 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 1100 | 0 | 350 | 0 | 40 | 0 | 20 | 0 | 20 | ++-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ +* Global Clock column represents track count; while other columns represents cell counts + + +5. Clock Regions : Global Clock Summary +--------------------------------------- + ++----+----+----+ +| | X0 | X1 | ++----+----+----+ +| Y1 | 0 | 0 | +| Y0 | 0 | 1 | ++----+----+----+ + + +6. Device Cell Placement Summary for Global Clock g0 +---------------------------------------------------- + ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +| Global Id | Driver Type/Pin | Driver Region (D) | Clock | Period (ns) | Waveform (ns) | Slice Loads | IO Loads | Clocking Loads | GT Loads | Net | ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +| g0 | BUFG/O | n/a | | | | 28 | 0 | 0 | 0 | clk_IBUF_BUFG | ++-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ +* Logic Loads column represents load cell count of all cell types other than IO, GT and clock resources +** IO Loads column represents load cell count of IO types +*** Clocking Loads column represents load cell count that are clock resources (global clock buffer, MMCM, PLL, etc) +**** GT Loads column represents load cell count of GT types + + ++----+----+-----+ +| | X0 | X1 | ++----+----+-----+ +| Y1 | 0 | 0 | +| Y0 | 0 | 28 | ++----+----+-----+ + + +7. Clock Region Cell Placement per Global Clock: Region X1Y0 +------------------------------------------------------------ + ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +| Global Id | Track | Driver Type/Pin | Constraint | Clock Loads | Non-Clock Loads | FF | LUTRAM | RAMB | DSP | GT | MMCM | PLL | Hard IP | Net | ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +| g0 | n/a | BUFG/O | None | 28 | 0 | 28 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | clk_IBUF_BUFG | ++-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ +* Clock Loads column represents the clock pin loads (pin count) +** Non-Clock Loads column represents the non-clock pin loads (pin count) +*** Columns FF, LUTRAM, RAMB through 'Hard IP' represents load cell counts + + + +# Location of BUFG Primitives +set_property LOC BUFGCTRL_X0Y16 [get_cells clk_IBUF_BUFG_inst] + +# Location of IO Primitives which is load of clock spine + +# Location of clock ports +set_property LOC IOB_X0Y78 [get_ports clk] + +# Clock net "clk_IBUF_BUFG" driven by instance "clk_IBUF_BUFG_inst" located at site "BUFGCTRL_X0Y16" +#startgroup +create_pblock {CLKAG_clk_IBUF_BUFG} +add_cells_to_pblock [get_pblocks {CLKAG_clk_IBUF_BUFG}] [get_cells -filter { PRIMITIVE_GROUP != I/O && IS_PRIMITIVE==1 && PRIMITIVE_LEVEL !=INTERNAL } -of_object [get_pins -filter {DIRECTION==IN} -of_objects [get_nets -hierarchical -filter {PARENT=="clk_IBUF_BUFG"}]]] +resize_pblock [get_pblocks {CLKAG_clk_IBUF_BUFG}] -add {CLOCKREGION_X1Y0:CLOCKREGION_X1Y0} +#endgroup diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt new file mode 100644 index 0000000..d93debe --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt @@ -0,0 +1,64 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Tue Oct 24 20:07:40 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_control_sets -verbose -file midpoint_control_sets_placed.rpt +| Design : midpoint +| Device : xc7z010 +------------------------------------------------------------------------------------- + +Control Set Information + +Table of Contents +----------------- +1. Summary +2. Flip-Flop Distribution +3. Detailed Control Set Information + +1. Summary +---------- + ++----------------------------------------------------------+-------+ +| Status | Count | ++----------------------------------------------------------+-------+ +| Number of unique control sets | 3 | +| Unused register locations in slices containing registers | 4 | ++----------------------------------------------------------+-------+ + + +2. Flip-Flop Distribution +------------------------- + ++--------------+-----------------------+------------------------+-----------------+--------------+ +| Clock Enable | Synchronous Set/Reset | Asynchronous Set/Reset | Total Registers | Total Slices | ++--------------+-----------------------+------------------------+-----------------+--------------+ +| No | No | No | 12 | 4 | +| No | No | Yes | 0 | 0 | +| No | Yes | No | 0 | 0 | +| Yes | No | No | 16 | 5 | +| Yes | No | Yes | 0 | 0 | +| Yes | Yes | No | 0 | 0 | ++--------------+-----------------------+------------------------+-----------------+--------------+ + + +3. Detailed Control Set Information +----------------------------------- + ++----------------+----------------------------+------------------+------------------+----------------+ +| Clock Signal | Enable Signal | Set/Reset Signal | Slice Load Count | Bel Load Count | ++----------------+----------------------------+------------------+------------------+----------------+ +| clk_IBUF_BUFG | parallelLoadCond/E[0] | | 3 | 8 | +| clk_IBUF_BUFG | shift/shiftregistermem_n_0 | | 2 | 8 | +| clk_IBUF_BUFG | | | 4 | 12 | ++----------------+----------------------------+------------------+------------------+----------------+ + + ++--------+-----------------------+ +| Fanout | Number of ControlSets | ++--------+-----------------------+ +| 8 | 2 | +| 12 | 1 | ++--------+-----------------------+ + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt new file mode 100644 index 0000000..ede0f44 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt @@ -0,0 +1,53 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Tue Oct 24 20:07:37 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_drc -file midpoint_drc_opted.rpt +| Design : midpoint +| Device : xc7z010clg400-1 +| Speed File : -1 +| Design State : Synthesized +------------------------------------------------------------------------------------ + +Report DRC + +Table of Contents +----------------- +1. REPORT SUMMARY +2. REPORT DETAILS + +1. REPORT SUMMARY +----------------- + Netlist: netlist + Floorplan: design_1 + Design limits: + Ruledeck: default + Max violations: + Violations found: 3 ++--------+------------------+----------------------------+------------+ +| Rule | Severity | Description | Violations | ++--------+------------------+----------------------------+------------+ +| NSTD-1 | Critical Warning | Unspecified I/O Standard | 1 | +| UCIO-1 | Critical Warning | Unconstrained Logical Port | 1 | +| ZPS7-1 | Warning | PS7 block required | 1 | ++--------+------------------+----------------------------+------------+ + +2. REPORT DETAILS +----------------- +NSTD-1#1 Critical Warning +Unspecified I/O Standard +19 out of 20 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, button. +Related violations: + +UCIO-1#1 Critical Warning +Unconstrained Logical Port +19 out of 20 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, button. +Related violations: + +ZPS7-1#1 Warning +PS7 block required +The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +Related violations: + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..0158a2ad826bcd75c8436a6a29252340aee67559 GIT binary patch literal 37 scmd;LGcqtV(KDRH% + Ruledeck: default + Max violations: + Violations found: 3 ++--------+------------------+----------------------------+------------+ +| Rule | Severity | Description | Violations | ++--------+------------------+----------------------------+------------+ +| NSTD-1 | Critical Warning | Unspecified I/O Standard | 1 | +| UCIO-1 | Critical Warning | Unconstrained Logical Port | 1 | +| ZPS7-1 | Warning | PS7 block required | 1 | ++--------+------------------+----------------------------+------------+ + +2. REPORT DETAILS +----------------- +NSTD-1#1 Critical Warning +Unspecified I/O Standard +19 out of 20 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, button. +Related violations: + +UCIO-1#1 Critical Warning +Unconstrained Logical Port +19 out of 20 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, button. +Related violations: + +ZPS7-1#1 Warning +PS7 block required +The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +Related violations: + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpx b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpx new file mode 100644 index 0000000000000000000000000000000000000000..69d3a68653e3ff56552d2ea369d2a5eb16e8c2c4 GIT binary patch literal 5001 zcmeHLU2j`87*1NL&5D39X`jQ+H@mwz1xIO_4fPP1UBI*i=Q%IZlq%6Z_2e zNm~YpJGex^FW^VO&qCscOL**a=$3>HG$|T_{_ z-C+I3+xrjN$3h)&lO@({qIqGq7Syl4-xpD;gtYBQhi$Dg%cDT2=ZnAN^KLwwmd;CG zm1n*wm%lBSzMFlkaj-?jAnR8!N4Yw)RNd0TijXDrh-oQg@5bETVXJYwc5CrSnv{p4 zD|kdZA2#XGG8r)))hoHh2epq&4}O}j-6zaUs!R1XN>tAemMU!xWrq8nrszq_JI%w^ z=3Zm-ps_*&mSmi6Hnu<6JlbvDTqPlm&@-h;O;^6`nETh03%6bv^7k%;wKkCRn?u80pr$ep>H*%49_6pd>? zi$xfdu!MyaBoIAnDg383XrK?820|rRg_5A*qXCvlGUQcLxFh0@C{~L0E)$8HrN<@L z%yKxiBdh^o)~8G++!#O3aJ*tRaF*Wn!?C}NU>>xHcLl=Y>4J_rdtvktbNDEDmuDkM zG(3=@WvMJ-xvJmiGUCz7s?Qp~b_XKmHpp<>PPIZ%;QYhw3D z2Ev$!r-t(UJPC;Qnyu{(dK7bsVO?NdAdba=MT!o<4MFW{2ESyX%`~TF9`piASSG`` zt(`$DOkCs~5pZKsl*grjoR1j=7Dio>zL^+4*m7sF=FR8 zlu>RT9A)RhQGOmAW$3|CjvlO?(6ZYKyFwdFwL4A^V6RF9Hp*xv_;GHgb{~K0YroE^ zg~iI3)!C(YhWA7&-6}0yuY6rbQ}x9rH@SZD*QDJ^OT+U=^ zdAGT>QYeA{u`o)7gb2;uGihODaE=q)?(|z8a7&lU$SJvhE{%q0Pev5wx%ZzDMUzoQ zKfFp6O{?;CuPa08J>l!hv?|}=Rpsxhazt26B@g?zOP=4{Ym^gG^Op}qkM|GnLFrt@ z7j + Max violations: + Violations found: 28 ++-----------+----------+-----------------------------+------------+ +| Rule | Severity | Description | Violations | ++-----------+----------+-----------------------------+------------+ +| TIMING-17 | Warning | Non-clocked sequential cell | 28 | ++-----------+----------+-----------------------------+------------+ + +2. REPORT DETAILS +----------------- +TIMING-17#1 Warning +Non-clocked sequential cell +The clock pin SCLKCond/conditioned_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#2 Warning +Non-clocked sequential cell +The clock pin SCLKCond/counter_reg[0]/C is not reached by a timing clock +Related violations: + +TIMING-17#3 Warning +Non-clocked sequential cell +The clock pin SCLKCond/counter_reg[1]/C is not reached by a timing clock +Related violations: + +TIMING-17#4 Warning +Non-clocked sequential cell +The clock pin SCLKCond/positiveedge_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#5 Warning +Non-clocked sequential cell +The clock pin SCLKCond/synchronizer0_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#6 Warning +Non-clocked sequential cell +The clock pin SCLKCond/synchronizer1_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#7 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/conditioned_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#8 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/counter_reg[0]/C is not reached by a timing clock +Related violations: + +TIMING-17#9 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/counter_reg[1]/C is not reached by a timing clock +Related violations: + +TIMING-17#10 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/negativeedge_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#11 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/synchronizer0_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#12 Warning +Non-clocked sequential cell +The clock pin parallelLoadCond/synchronizer1_reg/C is not reached by a timing clock +Related violations: + +TIMING-17#13 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[0]/C is not reached by a timing clock +Related violations: + +TIMING-17#14 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[1]/C is not reached by a timing clock +Related violations: + +TIMING-17#15 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[2]/C is not reached by a timing clock +Related violations: + +TIMING-17#16 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[3]/C is not reached by a timing clock +Related violations: + +TIMING-17#17 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[4]/C is not reached by a timing clock +Related violations: + +TIMING-17#18 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[5]/C is not reached by a timing clock +Related violations: + +TIMING-17#19 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[6]/C is not reached by a timing clock +Related violations: + +TIMING-17#20 Warning +Non-clocked sequential cell +The clock pin shift/parallelDataOut_reg[7]/C is not reached by a timing clock +Related violations: + +TIMING-17#21 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[0]/C is not reached by a timing clock +Related violations: + +TIMING-17#22 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[1]/C is not reached by a timing clock +Related violations: + +TIMING-17#23 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[2]/C is not reached by a timing clock +Related violations: + +TIMING-17#24 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[3]/C is not reached by a timing clock +Related violations: + +TIMING-17#25 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[4]/C is not reached by a timing clock +Related violations: + +TIMING-17#26 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[5]/C is not reached by a timing clock +Related violations: + +TIMING-17#27 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[6]/C is not reached by a timing clock +Related violations: + +TIMING-17#28 Warning +Non-clocked sequential cell +The clock pin shift/shiftregistermem_reg[7]/C is not reached by a timing clock +Related violations: + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpx b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpx new file mode 100644 index 0000000000000000000000000000000000000000..5503d49bf67d5b4281c906f8f766147dc4f4a9ef GIT binary patch literal 7608 zcmcK8%Tv=p90%~0YJl=8s0G^UMDWxZpy?BQ9jG(V@{pIHLai}b+YD(^lhgrE9z8n# zsXaL3j5C-`tg?^{zpx7jF0|k7@6%=X+a^Py&_FyEPjK0cP@K=rjBG8}_Z58ynH|+K zkL*83Bf@-kVz#BoZC%l@Zg7;8f126NnI`(o$ihPI6W%q=a=G49-*8(2b^4BHaRGXn0$$xT&VrV z@A)mt$@BK)RiF2~t(*3K|BR5_K+qk}FssYmk0yKX`}1_{;&RUL{I@CRFWB?1`OI&g zYEskCHRTI3GEe}PVO{P)G}RM$k{-XbAcugXBq#z21eOHQFoNJIN#JA*hV5O@Pf1X+ z3AV{y&=w6*Rgt=`i}H1kfA*2YHL!N+8sIR-042tvjj?ql#`!ZCavd;FBo4<_@^H-5 z9Em|niKT!NphLYHL;{pZNUV?<v=^iRg7ChR^k)j7_m~#ir0uLkxOf+(0IAZ>*oAVahuxGC;l0dncQhWw-4L@05JR>)J-x!D|(VOkShAcHI)dI?l-B9t(xk|zIe zmJwPLTrD@qePTA1kJdu(f_WiY;>(T|pjoqx>vFTvhrN>VJ{|X7mvhaI(qiDY30^(u z?5nbkBQWaT7(&g#7^B6&)f2q>Ea;O5+c*N_oi|3-#fZ^j;1UX6eU2>#D2~9Wd1K^U zjB#2FTt~qedA1m!I0ECy8zb*xOweNBIts=pu*Cqy5g3Qw7zG#O4lM?5q+pC9TMSSf zf$`QGqv&GXrNqeMP71~-vBdzz5g2d0F-o;z+(+-xV&Fcy>D4owwqbv5rjzbYD&suDye`Mz_k?a0jdiDJV1Gb K$F`40srCornzG#h literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp new file mode 100644 index 0000000000000000000000000000000000000000..c0f3024b688a746fd3e4f33abc6b8ae2aed74d08 GIT binary patch literal 216509 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ⅅYZ6Rpnf72 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�m7X5}`x9!QyfNOVu>)&a{K)Gu6B6mu?}a5v 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 literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp new file mode 100644 index 0000000000000000000000000000000000000000..f6f9bd0a2239cbf332eee28c43134d2fee48cb58 GIT binary patch literal 225191 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ïZ0db!#8;|iDsy`-LfuEgkY^-Eo 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 maXoBG&cWW$J*ZY3cEx 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

nzVCj! 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 I/Os" view | +| Internal nodes activity | Medium | User specified less than 25% of internal nodes | Provide missing internal nodes activity with simulation results or by editing the "By Resource Type" views | +| Device models | High | Device models are Production | | +| | | | | +| Overall confidence level | Low | | | ++-----------------------------+------------+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+ + + +2. Settings +----------- + +2.1 Environment +--------------- + ++-----------------------+------------------------+ +| Ambient Temp (C) | 25.0 | +| ThetaJA (C/W) | 11.5 | +| Airflow (LFM) | 250 | +| Heat Sink | none | +| ThetaSA (C/W) | 0.0 | +| Board Selection | medium (10"x10") | +| # of Board Layers | 8to11 (8 to 11 Layers) | +| Board Temperature (C) | 25.0 | ++-----------------------+------------------------+ + + +2.2 Clock Constraints +--------------------- + ++-------+--------+-----------------+ +| Clock | Domain | Constraint (ns) | ++-------+--------+-----------------+ + + +3. Detailed Reports +------------------- + +3.1 By Hierarchy +---------------- + ++--------------------+-----------+ +| Name | Power (W) | ++--------------------+-----------+ +| midpoint | 2.187 | +| SCLKCond | 0.038 | +| parallelLoadCond | 0.039 | +| shift | 0.046 | ++--------------------+-----------+ + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_routed.rpx b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_routed.rpx new file mode 100644 index 0000000000000000000000000000000000000000..9a7dae7aa9f236c96893e6f924b8c141019b131d GIT binary patch literal 22448 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 CbPUV@ literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_summary_routed.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_summary_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..d4ca8c8c13361752914b96f8b75c76149fd6c5d0 GIT binary patch literal 722 zcmZ|N&ui2`6bJAb)~?_W5bZ?~JD2uiS#+toDy`|VilUWzka|%J$?SGCnOQT*u3L~U zN>EQiAzt)UhzK48VNs}ux)AB92Wc*P(S`g2rF#?VyjhW6%;CeAnU_4mdwcT56DNy> ziKX1atY}h?nA~()l1WnagiEftb%(l?`_v|!`VNzRflOOIYcRh>Z0fOwy3wVU;L`U@ z#(niJbEq6AlDUCn`b_Y_2@xJ?P|Fvdx|aW172^CWXV^&g4c)~?v>%~QFqs0Q3t(0OI~T$55}0bkt2%4r8<6|jWDat43(RhVojYJ?gQ+&Y2f43J z>X4%cVAcRTO)z{2rrLfBak z*kzqstjg3d^=SNglan*2Mv15r%MsRnxxB7l*j&e_XM{(|&I-osfttFhj$I}t<24fO z_^72f14HuP1PDvPpu;1!lttK{qLXrz(*^z!7SBCojZe`v!1X6 LwUdIke_`|oKS<)^ literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.pb new file mode 100644 index 0000000000000000000000000000000000000000..5c013e2b3a45d061447284ba1120d5f27f8a00ce GIT binary patch literal 43 ycmd;LGcqtV(leRFEE1GoT9T>|T#{H)TC5OUnwy(gRC$1h;eilCgQU&^c?JLrC=BEP literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.rpt new file mode 100644 index 0000000..02f8d9f --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.rpt @@ -0,0 +1,11 @@ +Design Route Status + : # nets : + ------------------------------------------- : ----------- : + # of logical nets.......................... : 81 : + # of nets not needing routing.......... : 37 : + # of internally routed nets........ : 37 : + # of routable nets..................... : 44 : + # of fully routed nets............. : 44 : + # of nets with routing errors.......... : 0 : + ------------------------------------------- : ----------- : + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp new file mode 100644 index 0000000000000000000000000000000000000000..da41e4a790c8921fd79a1132b1b5d479ea0f24d5 GIT binary patch literal 230493 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%0AwdYyLL~1T_x*p~`+45y{jTr(u4`Ru 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 F{tH#aB~1VT literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.pb new file mode 100644 index 0000000000000000000000000000000000000000..6231f933cc6a804e42202aa34d3b53f813d792a3 GIT binary patch literal 224 zcmd;LGcqtV*E5>LtPxzAo10ivsgR$hP+F3ilUbEml9`_e;%28-Dioy_=a&{Grxxp- zH3qTQS}-s)*#8BR3{FQa s85leqCRuSfg}S*rhXnbYwF4=cYY!wGo`Oh*w=N)ZuPcynXmtaz0ZZ3C!vFvP literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.rpt new file mode 100644 index 0000000..20b5f63 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.rpt @@ -0,0 +1,203 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Tue Oct 24 20:07:40 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_utilization -file midpoint_utilization_placed.rpt -pb midpoint_utilization_placed.pb +| Design : midpoint +| Device : 7z010clg400-1 +| Design State : Fully Placed +------------------------------------------------------------------------------------------------------------- + +Utilization Design Information + +Table of Contents +----------------- +1. Slice Logic +1.1 Summary of Registers by Type +2. Slice Logic Distribution +3. Memory +4. DSP +5. IO and GT Specific +6. Clocking +7. Specific Feature +8. Primitives +9. Black Boxes +10. Instantiated Netlists + +1. Slice Logic +-------------- + ++-------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------------------+------+-------+-----------+-------+ +| Slice LUTs | 14 | 0 | 17600 | 0.08 | +| LUT as Logic | 14 | 0 | 17600 | 0.08 | +| LUT as Memory | 0 | 0 | 6000 | 0.00 | +| Slice Registers | 28 | 0 | 35200 | 0.08 | +| Register as Flip Flop | 28 | 0 | 35200 | 0.08 | +| Register as Latch | 0 | 0 | 35200 | 0.00 | +| F7 Muxes | 0 | 0 | 8800 | 0.00 | +| F8 Muxes | 0 | 0 | 4400 | 0.00 | ++-------------------------+------+-------+-----------+-------+ + + +1.1 Summary of Registers by Type +-------------------------------- + ++-------+--------------+-------------+--------------+ +| Total | Clock Enable | Synchronous | Asynchronous | ++-------+--------------+-------------+--------------+ +| 0 | _ | - | - | +| 0 | _ | - | Set | +| 0 | _ | - | Reset | +| 0 | _ | Set | - | +| 0 | _ | Reset | - | +| 0 | Yes | - | - | +| 0 | Yes | - | Set | +| 0 | Yes | - | Reset | +| 0 | Yes | Set | - | +| 28 | Yes | Reset | - | ++-------+--------------+-------------+--------------+ + + +2. Slice Logic Distribution +--------------------------- + ++-------------------------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------------------------------------+------+-------+-----------+-------+ +| Slice | 9 | 0 | 4400 | 0.20 | +| SLICEL | 6 | 0 | | | +| SLICEM | 3 | 0 | | | +| LUT as Logic | 14 | 0 | 17600 | 0.08 | +| using O5 output only | 0 | | | | +| using O6 output only | 10 | | | | +| using O5 and O6 | 4 | | | | +| LUT as Memory | 0 | 0 | 6000 | 0.00 | +| LUT as Distributed RAM | 0 | 0 | | | +| LUT as Shift Register | 0 | 0 | | | +| LUT Flip Flop Pairs | 13 | 0 | 17600 | 0.07 | +| fully used LUT-FF pairs | 4 | | | | +| LUT-FF pairs with one unused LUT output | 9 | | | | +| LUT-FF pairs with one unused Flip Flop | 9 | | | | +| Unique Control Sets | 3 | | | | ++-------------------------------------------+------+-------+-----------+-------+ +* Note: Review the Control Sets Report for more information regarding control sets. + + +3. Memory +--------- + ++----------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++----------------+------+-------+-----------+-------+ +| Block RAM Tile | 0 | 0 | 60 | 0.00 | +| RAMB36/FIFO* | 0 | 0 | 60 | 0.00 | +| RAMB18 | 0 | 0 | 120 | 0.00 | ++----------------+------+-------+-----------+-------+ +* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1 + + +4. DSP +------ + ++-----------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------+------+-------+-----------+-------+ +| DSPs | 0 | 0 | 80 | 0.00 | ++-----------+------+-------+-----------+-------+ + + +5. IO and GT Specific +--------------------- + ++-----------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------------------------+------+-------+-----------+-------+ +| Bonded IOB | 20 | 1 | 100 | 20.00 | +| IOB Master Pads | 10 | | | | +| IOB Slave Pads | 9 | | | | +| Bonded IPADs | 0 | 0 | 2 | 0.00 | +| Bonded IOPADs | 0 | 0 | 130 | 0.00 | +| PHY_CONTROL | 0 | 0 | 2 | 0.00 | +| PHASER_REF | 0 | 0 | 2 | 0.00 | +| OUT_FIFO | 0 | 0 | 8 | 0.00 | +| IN_FIFO | 0 | 0 | 8 | 0.00 | +| IDELAYCTRL | 0 | 0 | 2 | 0.00 | +| IBUFDS | 0 | 0 | 96 | 0.00 | +| PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 8 | 0.00 | +| PHASER_IN/PHASER_IN_PHY | 0 | 0 | 8 | 0.00 | +| IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 100 | 0.00 | +| ILOGIC | 0 | 0 | 100 | 0.00 | +| OLOGIC | 0 | 0 | 100 | 0.00 | ++-----------------------------+------+-------+-----------+-------+ + + +6. Clocking +----------- + ++------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++------------+------+-------+-----------+-------+ +| BUFGCTRL | 1 | 0 | 32 | 3.13 | +| BUFIO | 0 | 0 | 8 | 0.00 | +| MMCME2_ADV | 0 | 0 | 2 | 0.00 | +| PLLE2_ADV | 0 | 0 | 2 | 0.00 | +| BUFMRCE | 0 | 0 | 4 | 0.00 | +| BUFHCE | 0 | 0 | 48 | 0.00 | +| BUFR | 0 | 0 | 8 | 0.00 | ++------------+------+-------+-----------+-------+ + + +7. Specific Feature +------------------- + ++-------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------+------+-------+-----------+-------+ +| BSCANE2 | 0 | 0 | 4 | 0.00 | +| CAPTUREE2 | 0 | 0 | 1 | 0.00 | +| DNA_PORT | 0 | 0 | 1 | 0.00 | +| EFUSE_USR | 0 | 0 | 1 | 0.00 | +| FRAME_ECCE2 | 0 | 0 | 1 | 0.00 | +| ICAPE2 | 0 | 0 | 2 | 0.00 | +| STARTUPE2 | 0 | 0 | 1 | 0.00 | +| XADC | 0 | 0 | 1 | 0.00 | ++-------------+------+-------+-----------+-------+ + + +8. Primitives +------------- + ++----------+------+---------------------+ +| Ref Name | Used | Functional Category | ++----------+------+---------------------+ +| FDRE | 28 | Flop & Latch | +| LUT4 | 12 | LUT | +| IBUF | 12 | IO | +| OBUF | 8 | IO | +| LUT5 | 2 | LUT | +| LUT3 | 2 | LUT | +| LUT2 | 1 | LUT | +| LUT1 | 1 | LUT | +| BUFG | 1 | Clock | ++----------+------+---------------------+ + + +9. Black Boxes +-------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + +10. Instantiated Netlists +------------------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/opt_design.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/opt_design.pb new file mode 100644 index 0000000000000000000000000000000000000000..bff5620450bd177ca235e9e61a3a3ba7c96dccf6 GIT binary patch literal 7604 zcmd^ETW=dh6z(Q*0@J7p6>T9!bVM<^sJ3@@*SEBlph;R@gak;HK;i}Q6OfSLg;ylr`2+k2&dkQnZatgWgesLPMUj1WJahIt-#Ih$ z9ds8>E_&^@>DCu;mZ7P!>5-y7|MHf-W!AmWanlv=zgeW zj2t0)>x4hHGxn8oVrm5aq@Z`-3q#uWL)&fQ(8Em{ViP;IMO{X5!wYbOnqeoPcqYqc zFf3jGTb*vf2w~!WjOuD-e%u1*JXd=Qox0if9onXDXofaex(@U_;bV5J@*|a~Im>Ap zs@gxMHcrYp-6+T1{Z>Kh4KEzdy$rZV)Mw;g72M10WFjALKX$IK?5HAutfzk zBDVp!9*6=k-1Z>PY!|R=i_FQRDdC0D^P-mF>+l!ovF>*TjUiDFk`ezwL0>9scAMf^ zHn)H+zk{!0Rb3E&d7|OVm^!A<;GJW3UB`KRhk_@&c=paU_@PhDO&CFRQp#(p4nJ!G zrNC0ntEvHC8v&)*Z|ySMG95m$%I6l=EjtK1dqzU~!x3lQGRiJ_F2#(7g3b?@7IA2| zc{as}EFc-ti}T~rvsy;4|I@w2IF)*3x`XCcI)a^$AGW(igOCOgRn94} zIG$O@zU_h~f~Q)UABEi0&LBlnSyRllah>FdUWr5b0Xo<96llVelR8ds8KZj8G7uTy zYN9}1K{F9%1b3&!kMW|Y5S{h{CR*LvDA!2|vb|fd<2d}9LiHyK`aG5Da-OSN8qdq+ zO1@Mr?(extOJfos@7%9F!8Y$AzP6>C4S;m53Fcugx7G%*Y*Y01x!Oy9OZ~uvMwT#q=5eDv? z;e}%doHUQJr41H^6iTF+WlVWI7*mQerWDZmdo8;W!nvhsGdO(>c4SO&<}O-@I8($2 z%=N;t=jWrbXV}Q35GKVe~J?a>85Tui97f&DM#J!6!h6}N8MxE zGH#*bGUy&~d+Wbq37ujnqW_ix$M*{QA{CCjN>UF0$F+|RMV%FId(b+QpbkUj2e#v2 zwrTs=ay)AjZtUVp&E-5{V3Ew>)4=xX_zJ(-xhzr}2r=fz{cSkEhuUjsOoPjhjIlas ziF!hZ*bjKWFyyiqMl9zs~9cF0m9l^ukHUKWb+;?fF8hvYL4g6;*4zLgE1wq}8zUvI9Y;-sPG~!w7c{jhnN8)oMNc71n~nL@ zvXiqxFF@j(8lUZ-=YoiH=nO}QVgWF;euOM8W#k2PvZw5-5}j2`43O1^gLw%TIH7{2 zuu_-UhhpWQ3c_n3jzfxyHWLV|c!N?G+EFeIxI_k204cnrk*+StyIrEU;Cs;EkT~F= zhlQ5crUl+mFaxVqSfXq*^!x%GNKE&(xuF$$|2`B=H1R$9n1`kYE7*YfIw`d6x>#i$ z3PZkb$y9?0=vIMv$|>Gc=AFa(D3{U9ehUES8n#1mZ!PGf@b%!;1K5iDdT5ev-jfk@ zk)s$;27NzYiV1nuFsu>An_FCn(bL^tUaLU8JZTOwdvpHlt>h{cAY literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/place_design.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/place_design.pb new file mode 100644 index 0000000000000000000000000000000000000000..81b1927b191cba515908eaf66e0231ae753d382c GIT binary patch literal 12478 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 literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf b/Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf new file mode 100644 index 0000000..251b5b9 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf @@ -0,0 +1,31 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:56697661646f2053796e7468657369732044656661756c7473:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:4d69786564:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:566572696c6f67:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00 +5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:6265353433623634396233623433396462356163316236333432313231376264:506172656e742050412070726f6a656374204944:00 +eof:2955514487 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/route_design.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/route_design.pb new file mode 100644 index 0000000000000000000000000000000000000000..6ff40862acb045e15331209efe4e6187c706963f GIT binary patch literal 10356 zcmd^FPjlPG6%S>RZa1o`fdxo{>SV^YWIIliRFzdFqh_i?;8MZ} z1W*9fpCrf5^w3MsogRAWr5~WT-tz%EJ@*52`WgD$1xW$KGJ-mG;#M;rkGKHd+kNl% z-oAamB|jqz>%m}P`@J=~9FxWQrMZ@|^6g{y*zN_1<1tDWqF|Wty&jL<1D{>*@xDFu zlC|+4yH&HU>&D?r;r!|R?<+4Y&XK=V$i4eX!UtjE`Uf-#=mAftO+DA)e#~h z=QB;$>W+6{YFhD~-J0I18)hdv-9J=__Bco`H@zyRr)$q?dR%{pUQlbl=xi${b-JPe{_uNOJ=PBirQ z#02alh|a`Nd{=mRjY{l9d(I(uj$(y7is1P*Sz3<8g5d0g_h>wH93IF0q34}Re6ntK zaRzzwf{7@!V!dW=y*uQlux;P<-S`knPu%2C8ne1I*U9Po0r{3jA4X9S&00>^%6gBJ z2b&(Zf%=H|c_f^b9CGQ&blx!D#E{ZxbPymeTp#uuNTfH&BBo(!nPtnM>*ipxLtZ6M z6FZV22Mcc7@sW%oT{Bi*23q1IvRyxk*)4K?3n2|aDNIw-tvbHQf*~XeWb;rgVL487 z#5G;h^D!gvY)algs^b5K!(KH;aQQg*C zOk<9Lm5yUEE9P$%GEd~3^V9ufh5WX%?G8A-6W?8%8M}v?@b|MfA$j8Aja(F$!PB0j02flke#dOXZqN&ZmV!NfnBI^_*IE%%ktV@(=TqfV$1aKrG={jiBX#J zt2V@3W_&>EsSAv8VjX{*C|B$@8<%acPNbjR=-Qsc^ zD7spe4u&PvVrMYbI|CFy_JVzEzfZ6;%KeZk_F$FbNgfiSi$ZeFXT04qxaRyXIN$hh z0`DQw(jYKt(UDin6kn78B;uf@ii0M(wSj8$Oq_w~(<6RDf10V4$_2!vR%xNeo+;~U z`NS{hleWqyZ;|h825~~)3vh5j?N`nVWp*N@rM5aPLFZVVOibl;PIe+8HTV71^7cLQ zqcj<{Y0h(3%L+j`%y(3nf1BJ$D|7Tf#6gjl1K@qKni{?{D(uIfUoFd*Jf&MI%j1;3 z!y~tUCeGQi4C+yzqfb-nocbOyQU_R6Ddk1;gE@5?ux6bG)J2J2v`Y3g5S5F7uF4NM zpKhQN7o$@GN626(>4Oc@OnuPB{yQZhXMb+?n5J3Z=T4`}D_p1cZr};CNJ)et0YGDpT$|!O+Lq1kE*^9+u{qmFfI46p}`(s9%ih#*A@= z*Vs)`Q5}0kYdm+@{pIEQ@fY(&h35M|=SZ|1Pj_QskZd0oKh+&r`QE7aD*vADyPgl8 z_gzIxcwy<9iKcpnV3MdD5nXGl6d{`bvPrBfOvffqnW^vtp6XWHYP7nlZJ+ zk>7-8EtLmROzI|6U=e56PQ4=;orTkdlttPgw>}oYLuv~>+d)qlWR1O#u70B-VK%R~ z1yPXFd|(H>c=tNf>bljGrgat4G{JgIsK!~+;*dLNc*~7+JU2}tP1my0{`Ep25e0#;5U0|><3y?i z5o>`?uL>i%7cLLW?~|%*AuI3f(Dl=}n*u3`i=D_VqEqgLE^cp=UEGpc+j%d>jOQ3whUi`Uo5rdkLU!4rr^Be1>twT#J0`pXSJIN#XDqw0=y3eo8Y-4ibzg zrnM{r5?;{T*2;AU?4-CD@Q(`Fd**h|uY0kw^t@FRO=MMetE`TtX5IPe z*;rQ)g%UII4TpN^AMVo`Mggyrm8j;CmU7i zBF0rU&vQK4WH4POQX=xbpNFWkISw}{k~i(h9>i;-?R2h-nkLPRtV@>Z(~tv>2a(<5 zYqYMfj(YjqXCZ#$b6l`ef*eV;o2xy3S0OHvDw3v1oc;*!vLf!gP?74)Ug^Lkj^Z^B z`7x%1FT{nt5a>hLj6Sx}B*e{@xFO?1!!as-fB->`m)8L&0dj+ohmzw%>CjuO{0ApH B$3Fl7 literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js b/Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js new file mode 100644 index 0000000..331ed6d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js @@ -0,0 +1,44 @@ +// +// Vivado(TM) +// rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6 +// Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +// + +echo "This script was generated under a different operating system." +echo "Please update the PATH variable below, before executing this script" +exit + +var WshShell = new ActiveXObject( "WScript.Shell" ); +var ProcEnv = WshShell.Environment( "Process" ); +var PathVal = ProcEnv("PATH"); +if ( PathVal.length == 0 ) { + PathVal = "/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64;/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64;/opt/Xilinx/Vivado/2017.2/bin;"; +} else { + PathVal = "/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64;/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64;/opt/Xilinx/Vivado/2017.2/bin;" + PathVal; +} + +ProcEnv("PATH") = PathVal; + +var RDScrFP = WScript.ScriptFullName; +var RDScrN = WScript.ScriptName; +var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 ); +var ISEJScriptLib = RDScrDir + "/ISEWrap.js"; +eval( EAInclude(ISEJScriptLib) ); + + +// pre-commands: +ISETouchFile( "write_bitstream", "begin" ); +ISEStep( "vivado", + "-log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace" ); + + + + + +function EAInclude( EAInclFilename ) { + var EAFso = new ActiveXObject( "Scripting.FileSystemObject" ); + var EAInclFile = EAFso.OpenTextFile( EAInclFilename ); + var EAIFContents = EAInclFile.ReadAll(); + EAInclFile.Close(); + return EAIFContents; +} diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.bat b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.bat new file mode 100644 index 0000000..220ba68 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.bat @@ -0,0 +1,11 @@ +@echo off + +rem Vivado (TM) +rem runme.bat: a Vivado-generated Script +rem Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. + + +set HD_SDIR=%~dp0 +cd /d "%HD_SDIR%" +set PATH=%SYSTEMROOT%\system32;%PATH% +cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %* diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log new file mode 100644 index 0000000..01bb051 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log @@ -0,0 +1,447 @@ + +*** Running vivado + with args -log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace + + +****** Vivado v2017.2 (64-bit) + **** SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 + **** IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 + ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. + +source midpoint.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 195 ; free virtual = 1914 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 192 ; free virtual = 1911 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1539 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 +Ending Logic Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 97 ; free virtual = 1540 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 12dcb7d16 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 96 ; free virtual = 1539 +20 Infos, 12 Warnings, 12 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:20 . Memory (MB): peak = 1778.695 ; gain = 471.496 ; free physical = 96 ; free virtual = 1539 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1778.695 ; gain = 0.000 ; free physical = 93 ; free virtual = 1539 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp' has been generated. +Command: report_drc -file midpoint_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: f27d35d8 + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1530 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 15763cadc + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 1525 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 76 ; free virtual = 1525 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 +Phase 1 Placer Initialization | Checksum: 1987a6687 + +Time (s): cpu = 00:00:00.36 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 75 ; free virtual = 1525 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 15d447770 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1c56a8611 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 1d8926030 + +Time (s): cpu = 00:00:00.41 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 1524 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 3 Detail Placement | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:01 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 28d9c63fd + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 26c736591 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1522 +Ending Placer Task | Checksum: 17f82e77e + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 71 ; free virtual = 1523 +29 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 70 ; free virtual = 1524 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.35 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 82 ; free virtual = 1515 +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.23 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +report_control_sets: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1786.699 ; gain = 0.000 ; free physical = 89 ; free virtual = 1522 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: d7bd3c54 ConstDB: 0 ShapeSum: a7c5ab2a RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1823.699 ; gain = 37.000 ; free physical = 72 ; free virtual = 1430 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: 1a15202c3 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1826.699 ; gain = 40.000 ; free physical = 65 ; free virtual = 1427 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 1953b07aa + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a2f6b296 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 84 ; free virtual = 1422 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 4 Rip-up And Reroute | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 +Phase 6 Post Hold Fix | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0147804 % + Global Horizontal Routing Utilization = 0.0112592 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 3.6036%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 10.2941%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1832.699 ; gain = 46.000 ; free physical = 83 ; free virtual = 1422 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 2e653e0c + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 83 ; free virtual = 1421 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: e4d20086 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 82 ; free virtual = 1422 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 1834.699 ; gain = 48.000 ; free physical = 87 ; free virtual = 1428 + +Routing Is Done. +35 Infos, 13 Warnings, 12 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:10 ; elapsed = 00:00:24 . Memory (MB): peak = 1868.590 ; gain = 81.891 ; free physical = 82 ; free virtual = 1428 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1868.590 ; gain = 0.000 ; free physical = 79 ; free virtual = 1428 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp' has been generated. +Command: report_drc -file midpoint_drc_routed.rpt -pb midpoint_drc_routed.pb -rpx midpoint_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file midpoint_power_routed.rpt -pb midpoint_power_summary_routed.pb -rpx midpoint_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 14 Warnings, 12 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:08:11 2017... + +*** Running vivado + with args -log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace + + +****** Vivado v2017.2 (64-bit) + **** SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 + **** IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 + ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. + +source midpoint.tcl -notrace +Command: open_checkpoint midpoint_routed.dcp + +Starting open_checkpoint Task + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.07 . Memory (MB): peak = 1083.047 ; gain = 0.000 ; free physical = 549 ; free virtual = 2131 +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-7508-comparch-VirtualBox/dcp3/midpoint.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-7508-comparch-VirtualBox/dcp3/midpoint.xdc] +Reading XDEF placement. +Reading placer database... +Reading XDEF routing. +Read XDEF File: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.207 ; gain = 0.000 ; free physical = 240 ; free virtual = 1865 +Restored from archive | CPU: 0.020000 secs | Memory: 0.070175 MB | +Finished XDEF File Restore: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.207 ; gain = 0.000 ; free physical = 240 ; free virtual = 1865 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +INFO: [Project 1-604] Checkpoint was created with Vivado v2017.2 (64-bit) build 1909853 +open_checkpoint: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 1304.207 ; gain = 221.160 ; free physical = 244 ; free virtual = 1867 +Command: write_bitstream -force midpoint.bit +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command write_bitstream +Command: report_drc (run_mandatory_drcs) for: bitstream_checks +ERROR: [DRC NSTD-1] Unspecified I/O Standard: 19 out of 20 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, and button. +ERROR: [DRC UCIO-1] Unconstrained Logical Port: 19 out of 20 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: parallelDataIn[7:0], parallelDataOut2[7:0], switch0, switch1, and button. +WARNING: [DRC ZPS7-1] PS7 block required: The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado 12-3199] DRC finished with 2 Errors, 1 Warnings +INFO: [Vivado 12-3200] Please refer to the DRC report (report_drc) for more information. +ERROR: [Vivado 12-1345] Error(s) found during DRC. Bitgen not run. +10 Infos, 1 Warnings, 0 Critical Warnings and 3 Errors encountered. +write_bitstream failed +ERROR: [Common 17-39] 'write_bitstream' failed due to earlier errors. + +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:09:06 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh new file mode 100755 index 0000000..cbb487a --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# +# Vivado(TM) +# runme.sh: a Vivado-generated Runs Script for UNIX +# Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +# + +if [ -z "$PATH" ]; then + PATH=/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64:/opt/Xilinx/Vivado/2017.2/bin +else + PATH=/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64:/opt/Xilinx/Vivado/2017.2/bin:$PATH +fi +export PATH + +if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH=/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64 +else + LD_LIBRARY_PATH=/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64:$LD_LIBRARY_PATH +fi +export LD_LIBRARY_PATH + +HD_PWD='/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1' +cd "$HD_PWD" + +HD_LOG=runme.log +/bin/touch $HD_LOG + +ISEStep="./ISEWrap.sh" +EAStep() +{ + $ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1 + if [ $? -ne 0 ] + then + exit + fi +} + +# pre-commands: +/bin/touch .write_bitstream.begin.rst +EAStep vivado -log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou new file mode 100644 index 0000000..8515986 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:08:26 2017 +# Process ID: 7508 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb new file mode 100644 index 0000000..b155e40 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb @@ -0,0 +1,4 @@ + + + +End Record \ No newline at end of file diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_5832.backup.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_5832.backup.jou new file mode 100644 index 0000000..a516a5d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_5832.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:40:37 2017 +# Process ID: 5832 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6218.backup.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6218.backup.jou new file mode 100644 index 0000000..77baf7d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6218.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:47:26 2017 +# Process ID: 6218 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6346.backup.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6346.backup.jou new file mode 100644 index 0000000..564e144 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_6346.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 19:51:56 2017 +# Process ID: 6346 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7034.backup.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7034.backup.jou new file mode 100644 index 0000000..f92374b --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7034.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:02:36 2017 +# Process ID: 7034 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7379.backup.jou b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7379.backup.jou new file mode 100644 index 0000000..70673c6 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado_7379.backup.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:06:42 2017 +# Process ID: 7379 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log midpoint.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/write_bitstream.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/write_bitstream.pb new file mode 100644 index 0000000000000000000000000000000000000000..3702f7c0ffc3b0db07b9c5f2ab953c10deff3964 GIT binary patch literal 7340 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 + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/.vivado.end.rst b/Lab2Vivado/Lab2Vivado.runs/synth_1/.vivado.end.rst new file mode 100644 index 0000000..e69de29 diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.js b/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.js new file mode 100755 index 0000000..8284d2d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.js @@ -0,0 +1,244 @@ +// +// Vivado(TM) +// ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6 +// Copyright 1986-1999, 2001-2013,2015 Xilinx, Inc. All Rights Reserved. +// + +// GLOBAL VARIABLES +var ISEShell = new ActiveXObject( "WScript.Shell" ); +var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" ); +var ISERunDir = ""; +var ISELogFile = "runme.log"; +var ISELogFileStr = null; +var ISELogEcho = true; +var ISEOldVersionWSH = false; + + + +// BOOTSTRAP +ISEInit(); + + + +// +// ISE FUNCTIONS +// +function ISEInit() { + + // 1. RUN DIR setup + var ISEScrFP = WScript.ScriptFullName; + var ISEScrN = WScript.ScriptName; + ISERunDir = + ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 ); + + // 2. LOG file setup + ISELogFileStr = ISEOpenFile( ISELogFile ); + + // 3. LOG echo? + var ISEScriptArgs = WScript.Arguments; + for ( var loopi=0; loopi> " + ISELogFile + " 2>&1"; + ISEExitCode = ISEShell.Run( ISECmdLine, 0, true ); + ISELogFileStr = ISEOpenFile( ISELogFile ); + + } else { // WSH 5.6 + + // LAUNCH! + ISEShell.CurrentDirectory = ISERunDir; + + // Redirect STDERR to STDOUT + ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1"; + var ISEProcess = ISEShell.Exec( ISECmdLine ); + + // BEGIN file creation + var ISENetwork = WScript.CreateObject( "WScript.Network" ); + var ISEHost = ISENetwork.ComputerName; + var ISEUser = ISENetwork.UserName; + var ISEPid = ISEProcess.ProcessID; + var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.WriteLine( " " ); + ISEBeginFile.WriteLine( " " ); + ISEBeginFile.WriteLine( "" ); + ISEBeginFile.Close(); + + var ISEOutStr = ISEProcess.StdOut; + var ISEErrStr = ISEProcess.StdErr; + + // WAIT for ISEStep to finish + while ( ISEProcess.Status == 0 ) { + + // dump stdout then stderr - feels a little arbitrary + while ( !ISEOutStr.AtEndOfStream ) { + ISEStdOut( ISEOutStr.ReadLine() ); + } + + WScript.Sleep( 100 ); + } + + ISEExitCode = ISEProcess.ExitCode; + } + + ISELogFileStr.Close(); + + // END/ERROR file creation + if ( ISEExitCode != 0 ) { + ISETouchFile( ISEStep, "error" ); + + } else { + ISETouchFile( ISEStep, "end" ); + } + + return ISEExitCode; +} + + +// +// UTILITIES +// +function ISEStdOut( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdOut.WriteLine( ISELine ); + } +} + +function ISEStdErr( ISELine ) { + + ISELogFileStr.WriteLine( ISELine ); + + if ( ISELogEcho ) { + WScript.StdErr.WriteLine( ISELine ); + } +} + +function ISETouchFile( ISERoot, ISEStatus ) { + + var ISETFile = + ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" ); + ISETFile.Close(); +} + +function ISEOpenFile( ISEFilename ) { + + // This function has been updated to deal with a problem seen in CR #870871. + // In that case the user runs a script that runs impl_1, and then turns around + // and runs impl_1 -to_step write_bitstream. That second run takes place in + // the same directory, which means we may hit some of the same files, and in + // particular, we will open the runme.log file. Even though this script closes + // the file (now), we see cases where a subsequent attempt to open the file + // fails. Perhaps the OS is slow to release the lock, or the disk comes into + // play? In any case, we try to work around this by first waiting if the file + // is already there for an arbitrary 5 seconds. Then we use a try-catch block + // and try to open the file 10 times with a one second delay after each attempt. + // Again, 10 is arbitrary. But these seem to stop the hang in CR #870871. + // If there is an unrecognized exception when trying to open the file, we output + // an error message and write details to an exception.log file. + var ISEFullPath = ISERunDir + "/" + ISEFilename; + if (ISEFileSys.FileExists(ISEFullPath)) { + // File is already there. This could be a problem. Wait in case it is still in use. + WScript.Sleep(5000); + } + var i; + for (i = 0; i < 10; ++i) { + try { + return ISEFileSys.OpenTextFile(ISEFullPath, 8, true); + } catch (exception) { + var error_code = exception.number & 0xFFFF; // The other bits are a facility code. + if (error_code == 52) { // 52 is bad file name or number. + // Wait a second and try again. + WScript.Sleep(1000); + continue; + } else { + WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + var exceptionFilePath = ISERunDir + "/exception.log"; + if (!ISEFileSys.FileExists(exceptionFilePath)) { + WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details."); + var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true); + exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath); + exceptionFile.WriteLine("\tException name: " + exception.name); + exceptionFile.WriteLine("\tException error code: " + error_code); + exceptionFile.WriteLine("\tException message: " + exception.message); + exceptionFile.Close(); + } + throw exception; + } + } + } + // If we reached this point, we failed to open the file after 10 attempts. + // We need to error out. + WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath); + WScript.Quit(1); +} diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.sh b/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.sh new file mode 100755 index 0000000..e1a8f5d --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/ISEWrap.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# +# Vivado(TM) +# ISEWrap.sh: Vivado Runs Script for UNIX +# Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved. +# + +HD_LOG=$1 +shift + +# CHECK for a STOP FILE +if [ -f .stop.rst ] +then +echo "" >> $HD_LOG +echo "*** Halting run - EA reset detected ***" >> $HD_LOG +echo "" >> $HD_LOG +exit 1 +fi + +ISE_STEP=$1 +shift + +# WRITE STEP HEADER to LOG +echo "" >> $HD_LOG +echo "*** Running $ISE_STEP" >> $HD_LOG +echo " with args $@" >> $HD_LOG +echo "" >> $HD_LOG + +# LAUNCH! +$ISE_STEP "$@" >> $HD_LOG 2>&1 & + +# BEGIN file creation +ISE_PID=$! +if [ X != X$HOSTNAME ] +then +ISE_HOST=$HOSTNAME #bash +else +ISE_HOST=$HOST #csh +fi +ISE_USER=$USER +ISE_BEGINFILE=.$ISE_STEP.begin.rst +/bin/touch $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE +echo " " >> $ISE_BEGINFILE +echo " " >> $ISE_BEGINFILE +echo "" >> $ISE_BEGINFILE + +# WAIT for ISEStep to finish +wait $ISE_PID + +# END/ERROR file creation +RETVAL=$? +if [ $RETVAL -eq 0 ] +then + /bin/touch .$ISE_STEP.end.rst +else + /bin/touch .$ISE_STEP.error.rst +fi + +exit $RETVAL + diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/gen_run.xml b/Lab2Vivado/Lab2Vivado.runs/synth_1/gen_run.xml new file mode 100644 index 0000000..9f41403 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/gen_run.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt b/Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt new file mode 100644 index 0000000..8cf3c97 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt @@ -0,0 +1,9 @@ +# +# Vivado(TM) +# htr.txt: a Vivado-generated description of how-to-repeat the +# the basic steps of a run. Note that runme.bat/sh needs +# to be invoked for Vivado to track run status. +# Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +# + +vivado -log midpoint.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp new file mode 100644 index 0000000000000000000000000000000000000000..b3f8668edccd1faa17c1a490c6dd917d6cfc50c6 GIT binary patch literal 15803 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 A?*IS* literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.tcl b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.tcl new file mode 100644 index 0000000..ef55d6c --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.tcl @@ -0,0 +1,35 @@ +# +# Synthesis run script generated by Vivado +# + +create_project -in_memory -part xc7z010clg400-1 + +set_param project.singleFileAddWarning.threshold 0 +set_param project.compositeFile.enableAutoGeneration 0 +set_param synth.vivado.isSynthRun true +set_property webtalk.parent_dir /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.cache/wt [current_project] +set_property parent.project_path /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.xpr [current_project] +set_property default_lib xil_defaultlib [current_project] +set_property target_language Verilog [current_project] +set_property board_part digilentinc.com:zybo:part0:1.0 [current_project] +set_property ip_output_repo /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.cache/ip [current_project] +set_property ip_cache_permissions {read write} [current_project] +read_verilog -library xil_defaultlib /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v +# Mark all dcp files as not used in implementation to prevent them from being +# stitched into the results of this synthesis run. Any black boxes in the +# design are intentionally left as such for best results. Dcp files will be +# stitched into the design at a later time, either when this synthesis run is +# opened, or when it is stitched into a dependent implementation run. +foreach dcp [get_files -quiet -all -filter file_type=="Design\ Checkpoint"] { + set_property used_in_implementation false $dcp +} +read_xdc /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc +set_property used_in_implementation false [get_files /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] + + +synth_design -top midpoint -part xc7z010clg400-1 + + +write_checkpoint -force -noxdef midpoint.dcp + +catch { report_utilization -file midpoint_utilization_synth.rpt -pb midpoint_utilization_synth.pb } diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds new file mode 100644 index 0000000..866f189 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds @@ -0,0 +1,342 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:05:38 2017 +# Process ID: 7257 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1 +# Command line: vivado -log midpoint.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace +Command: synth_design -top midpoint -part xc7z010clg400-1 +Starting synth_design +Attempting to get a license for feature 'Synthesis' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7z010-clg400' +INFO: Launching helper process for spawning children vivado processes +INFO: Helper process launched with PID 7265 +--------------------------------------------------------------------------------- +Starting RTL Elaboration : Time (s): cpu = 00:00:03 ; elapsed = 00:00:06 . Memory (MB): peak = 1136.637 ; gain = 38.996 ; free physical = 303 ; free virtual = 2062 +--------------------------------------------------------------------------------- +INFO: [Synth 8-638] synthesizing module 'midpoint' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v:6] + Parameter width bound to: 8 - type: integer +INFO: [Synth 8-638] synthesizing module 'inputconditioner' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v:9] + Parameter counterwidth bound to: 3 - type: integer + Parameter waittime bound to: 3 - type: integer +INFO: [Synth 8-256] done synthesizing module 'inputconditioner' (1#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v:9] +INFO: [Synth 8-638] synthesizing module 'shiftregister' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:9] + Parameter width bound to: 8 - type: integer +INFO: [Synth 8-256] done synthesizing module 'shiftregister' (2#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:9] +INFO: [Synth 8-256] done synthesizing module 'midpoint' (3#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v:6] +--------------------------------------------------------------------------------- +Finished RTL Elaboration : Time (s): cpu = 00:00:04 ; elapsed = 00:00:07 . Memory (MB): peak = 1177.137 ; gain = 79.496 ; free physical = 311 ; free virtual = 2072 +--------------------------------------------------------------------------------- + +Report Check Netlist: ++------+------------------+-------+---------+-------+------------------+ +| |Item |Errors |Warnings |Status |Description | ++------+------------------+-------+---------+-------+------------------+ +|1 |multi_driven_nets | 0| 0|Passed |Multi driven nets | ++------+------------------+-------+---------+-------+------------------+ +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 1 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:07 . Memory (MB): peak = 1177.137 ; gain = 79.496 ; free physical = 311 ; free virtual = 2072 +--------------------------------------------------------------------------------- +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization + +Processing XDC Constraints +Initializing timing engine +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Project 1-236] Implementation specific constraints were found while reading constraint file [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc]. These constraints will be ignored for synthesis but will be used in implementation. Impacted constraints are listed in the file [.Xil/midpoint_propImpl.xdc]. +Resolution: To avoid this warning, move constraints listed in [.Xil/midpoint_propImpl.xdc] to another XDC file and exclude this new file from synthesis with the used_in_synthesis property (File Properties dialog in GUI) and re-run elaboration/synthesis. +Completed Processing XDC Constraints + +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Constraint Validation Runtime : Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1466.039 ; gain = 0.000 ; free physical = 123 ; free virtual = 1888 +--------------------------------------------------------------------------------- +Finished Constraint Validation : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 187 ; free virtual = 1952 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Loading Part and Timing Information +--------------------------------------------------------------------------------- +Loading part: xc7z010clg400-1 +--------------------------------------------------------------------------------- +Finished Loading Part and Timing Information : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 187 ; free virtual = 1952 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying 'set_property' XDC Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished applying 'set_property' XDC Constraints : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 188 ; free virtual = 1953 +--------------------------------------------------------------------------------- +INFO: [Synth 8-5544] ROM "conditioned" won't be mapped to Block RAM because address size (3) smaller than threshold (5) +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 178 ; free virtual = 1944 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start RTL Component Statistics +--------------------------------------------------------------------------------- +Detailed RTL Component Info : ++---Adders : + 2 Input 3 Bit Adders := 3 ++---Registers : + 8 Bit Registers := 2 + 3 Bit Registers := 3 + 1 Bit Registers := 16 ++---Muxes : + 2 Input 8 Bit Muxes := 2 + 2 Input 3 Bit Muxes := 3 + 2 Input 1 Bit Muxes := 17 +--------------------------------------------------------------------------------- +Finished RTL Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start RTL Hierarchical Component Statistics +--------------------------------------------------------------------------------- +Hierarchical RTL Component report +Module inputconditioner +Detailed RTL Component Info : ++---Adders : + 2 Input 3 Bit Adders := 1 ++---Registers : + 3 Bit Registers := 1 + 1 Bit Registers := 5 ++---Muxes : + 2 Input 3 Bit Muxes := 1 + 2 Input 1 Bit Muxes := 5 +Module shiftregister +Detailed RTL Component Info : ++---Registers : + 8 Bit Registers := 2 + 1 Bit Registers := 1 ++---Muxes : + 2 Input 8 Bit Muxes := 2 + 2 Input 1 Bit Muxes := 2 +--------------------------------------------------------------------------------- +Finished RTL Hierarchical Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Part Resource Summary +--------------------------------------------------------------------------------- +Part Resources: +DSPs: 80 (col length:40) +BRAMs: 120 (col length: RAMB18 40 RAMB36 20) +--------------------------------------------------------------------------------- +Finished Part Resource Summary +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Cross Boundary and Area Optimization +--------------------------------------------------------------------------------- +WARNING: [Synth 8-6014] Unused sequential element shift/serialDataOut_reg was removed. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:30] +WARNING: [Synth 8-3332] Sequential element (parallelLoadCond/positiveedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/synchronizer0_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/synchronizer1_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/conditioned_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[2]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[1]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[0]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/positiveedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/negativeedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (SCLKCond/negativeedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (parallelLoadCond/counter_reg[2]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (SCLKCond/counter_reg[2]) is unused and will be removed from module midpoint. +--------------------------------------------------------------------------------- +Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 174 ; free virtual = 1940 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Applying XDC Timing Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Applying XDC Timing Constraints : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 65 ; free virtual = 1806 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Timing Optimization +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Timing Optimization : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 65 ; free virtual = 1806 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Technology Mapping +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Technology Mapping : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 97 ; free virtual = 1796 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished IO Insertion : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- + +Report Check Netlist: ++------+------------------+-------+---------+-------+------------------+ +| |Item |Errors |Warnings |Status |Description | ++------+------------------+-------+---------+-------+------------------+ +|1 |multi_driven_nets | 0| 0|Passed |Multi driven nets | ++------+------------------+-------+---------+-------+------------------+ +--------------------------------------------------------------------------------- +Start Renaming Generated Instances +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Instances : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Rebuilding User Hierarchy +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Ports +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Ports : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1794 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Nets +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Nets : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Writing Synthesis Report +--------------------------------------------------------------------------------- + +Report BlackBoxes: ++-+--------------+----------+ +| |BlackBox name |Instances | ++-+--------------+----------+ ++-+--------------+----------+ + +Report Cell Usage: ++------+-----+------+ +| |Cell |Count | ++------+-----+------+ +|1 |BUFG | 1| +|2 |LUT1 | 1| +|3 |LUT2 | 1| +|4 |LUT3 | 2| +|5 |LUT4 | 12| +|6 |LUT5 | 2| +|7 |FDRE | 28| +|8 |IBUF | 12| +|9 |OBUF | 8| ++------+-----+------+ + +Report Instance Areas: ++------+-------------------+-------------------+------+ +| |Instance |Module |Cells | ++------+-------------------+-------------------+------+ +|1 |top | | 67| +|2 | SCLKCond |inputconditioner | 10| +|3 | parallelLoadCond |inputconditioner_0 | 11| +|4 | shift |shiftregister | 25| ++------+-------------------+-------------------+------+ +--------------------------------------------------------------------------------- +Finished Writing Synthesis Report : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +Synthesis finished with 0 errors, 0 critical warnings and 13 warnings. +Synthesis Optimization Runtime : Time (s): cpu = 00:00:14 ; elapsed = 00:00:25 . Memory (MB): peak = 1466.039 ; gain = 79.496 ; free physical = 154 ; free virtual = 1853 +Synthesis Optimization Complete : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.047 ; gain = 368.398 ; free physical = 157 ; free virtual = 1856 +INFO: [Project 1-571] Translating synthesized netlist +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +18 Infos, 25 Warnings, 12 Critical Warnings and 0 Errors encountered. +synth_design completed successfully +synth_design: Time (s): cpu = 00:00:19 ; elapsed = 00:00:35 . Memory (MB): peak = 1466.047 ; gain = 380.992 ; free physical = 119 ; free virtual = 1819 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp' has been generated. +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1466.047 ; gain = 0.000 ; free physical = 119 ; free virtual = 1820 +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:06:28 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.pb b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.pb new file mode 100644 index 0000000000000000000000000000000000000000..6231f933cc6a804e42202aa34d3b53f813d792a3 GIT binary patch literal 224 zcmd;LGcqtV*E5>LtPxzAo10ivsgR$hP+F3ilUbEml9`_e;%28-Dioy_=a&{Grxxp- zH3qTQS}-s)*#8BR3{FQa s85leqCRuSfg}S*rhXnbYwF4=cYY!wGo`Oh*w=N)ZuPcynXmtaz0ZZ3C!vFvP literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.rpt b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.rpt new file mode 100644 index 0000000..dbc411e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.rpt @@ -0,0 +1,176 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +----------------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Tue Oct 24 20:06:28 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_utilization -file midpoint_utilization_synth.rpt -pb midpoint_utilization_synth.pb +| Design : midpoint +| Device : 7z010clg400-1 +| Design State : Synthesized +----------------------------------------------------------------------------------------------------------- + +Utilization Design Information + +Table of Contents +----------------- +1. Slice Logic +1.1 Summary of Registers by Type +2. Memory +3. DSP +4. IO and GT Specific +5. Clocking +6. Specific Feature +7. Primitives +8. Black Boxes +9. Instantiated Netlists + +1. Slice Logic +-------------- + ++-------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------------------+------+-------+-----------+-------+ +| Slice LUTs* | 14 | 0 | 17600 | 0.08 | +| LUT as Logic | 14 | 0 | 17600 | 0.08 | +| LUT as Memory | 0 | 0 | 6000 | 0.00 | +| Slice Registers | 28 | 0 | 35200 | 0.08 | +| Register as Flip Flop | 28 | 0 | 35200 | 0.08 | +| Register as Latch | 0 | 0 | 35200 | 0.00 | +| F7 Muxes | 0 | 0 | 8800 | 0.00 | +| F8 Muxes | 0 | 0 | 4400 | 0.00 | ++-------------------------+------+-------+-----------+-------+ +* Warning! The Final LUT count, after physical optimizations and full implementation, is typically lower. Run opt_design after synthesis, if not already completed, for a more realistic count. + + +1.1 Summary of Registers by Type +-------------------------------- + ++-------+--------------+-------------+--------------+ +| Total | Clock Enable | Synchronous | Asynchronous | ++-------+--------------+-------------+--------------+ +| 0 | _ | - | - | +| 0 | _ | - | Set | +| 0 | _ | - | Reset | +| 0 | _ | Set | - | +| 0 | _ | Reset | - | +| 0 | Yes | - | - | +| 0 | Yes | - | Set | +| 0 | Yes | - | Reset | +| 0 | Yes | Set | - | +| 28 | Yes | Reset | - | ++-------+--------------+-------------+--------------+ + + +2. Memory +--------- + ++----------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++----------------+------+-------+-----------+-------+ +| Block RAM Tile | 0 | 0 | 60 | 0.00 | +| RAMB36/FIFO* | 0 | 0 | 60 | 0.00 | +| RAMB18 | 0 | 0 | 120 | 0.00 | ++----------------+------+-------+-----------+-------+ +* Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1 + + +3. DSP +------ + ++-----------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------+------+-------+-----------+-------+ +| DSPs | 0 | 0 | 80 | 0.00 | ++-----------+------+-------+-----------+-------+ + + +4. IO and GT Specific +--------------------- + ++-----------------------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-----------------------------+------+-------+-----------+-------+ +| Bonded IOB | 20 | 0 | 100 | 20.00 | +| Bonded IPADs | 0 | 0 | 2 | 0.00 | +| Bonded IOPADs | 0 | 0 | 130 | 0.00 | +| PHY_CONTROL | 0 | 0 | 2 | 0.00 | +| PHASER_REF | 0 | 0 | 2 | 0.00 | +| OUT_FIFO | 0 | 0 | 8 | 0.00 | +| IN_FIFO | 0 | 0 | 8 | 0.00 | +| IDELAYCTRL | 0 | 0 | 2 | 0.00 | +| IBUFDS | 0 | 0 | 96 | 0.00 | +| PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 8 | 0.00 | +| PHASER_IN/PHASER_IN_PHY | 0 | 0 | 8 | 0.00 | +| IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 100 | 0.00 | +| ILOGIC | 0 | 0 | 100 | 0.00 | +| OLOGIC | 0 | 0 | 100 | 0.00 | ++-----------------------------+------+-------+-----------+-------+ + + +5. Clocking +----------- + ++------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++------------+------+-------+-----------+-------+ +| BUFGCTRL | 1 | 0 | 32 | 3.13 | +| BUFIO | 0 | 0 | 8 | 0.00 | +| MMCME2_ADV | 0 | 0 | 2 | 0.00 | +| PLLE2_ADV | 0 | 0 | 2 | 0.00 | +| BUFMRCE | 0 | 0 | 4 | 0.00 | +| BUFHCE | 0 | 0 | 48 | 0.00 | +| BUFR | 0 | 0 | 8 | 0.00 | ++------------+------+-------+-----------+-------+ + + +6. Specific Feature +------------------- + ++-------------+------+-------+-----------+-------+ +| Site Type | Used | Fixed | Available | Util% | ++-------------+------+-------+-----------+-------+ +| BSCANE2 | 0 | 0 | 4 | 0.00 | +| CAPTUREE2 | 0 | 0 | 1 | 0.00 | +| DNA_PORT | 0 | 0 | 1 | 0.00 | +| EFUSE_USR | 0 | 0 | 1 | 0.00 | +| FRAME_ECCE2 | 0 | 0 | 1 | 0.00 | +| ICAPE2 | 0 | 0 | 2 | 0.00 | +| STARTUPE2 | 0 | 0 | 1 | 0.00 | +| XADC | 0 | 0 | 1 | 0.00 | ++-------------+------+-------+-----------+-------+ + + +7. Primitives +------------- + ++----------+------+---------------------+ +| Ref Name | Used | Functional Category | ++----------+------+---------------------+ +| FDRE | 28 | Flop & Latch | +| LUT4 | 12 | LUT | +| IBUF | 12 | IO | +| OBUF | 8 | IO | +| LUT5 | 2 | LUT | +| LUT3 | 2 | LUT | +| LUT2 | 1 | LUT | +| LUT1 | 1 | LUT | +| BUFG | 1 | Clock | ++----------+------+---------------------+ + + +8. Black Boxes +-------------- + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + +9. Instantiated Netlists +------------------------ + ++----------+------+ +| Ref Name | Used | ++----------+------+ + + diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/project.wdf b/Lab2Vivado/Lab2Vivado.runs/synth_1/project.wdf new file mode 100644 index 0000000..251b5b9 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/project.wdf @@ -0,0 +1,31 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:56697661646f2053796e7468657369732044656661756c7473:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:31:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:4d69786564:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:566572696c6f67:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00 +70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00 +5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:6265353433623634396233623433396462356163316236333432313231376264:506172656e742050412070726f6a656374204944:00 +eof:2955514487 diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js b/Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js new file mode 100644 index 0000000..d3f8836 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js @@ -0,0 +1,40 @@ +// +// Vivado(TM) +// rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6 +// Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +// + +echo "This script was generated under a different operating system." +echo "Please update the PATH variable below, before executing this script" +exit + +var WshShell = new ActiveXObject( "WScript.Shell" ); +var ProcEnv = WshShell.Environment( "Process" ); +var PathVal = ProcEnv("PATH"); +if ( PathVal.length == 0 ) { + PathVal = "/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64;/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64;/opt/Xilinx/Vivado/2017.2/bin;"; +} else { + PathVal = "/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64;/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64;/opt/Xilinx/Vivado/2017.2/bin;" + PathVal; +} + +ProcEnv("PATH") = PathVal; + +var RDScrFP = WScript.ScriptFullName; +var RDScrN = WScript.ScriptName; +var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 ); +var ISEJScriptLib = RDScrDir + "/ISEWrap.js"; +eval( EAInclude(ISEJScriptLib) ); + + +ISEStep( "vivado", + "-log midpoint.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl" ); + + + +function EAInclude( EAInclFilename ) { + var EAFso = new ActiveXObject( "Scripting.FileSystemObject" ); + var EAInclFile = EAFso.OpenTextFile( EAInclFilename ); + var EAIFContents = EAInclFile.ReadAll(); + EAInclFile.Close(); + return EAIFContents; +} diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.bat b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.bat new file mode 100644 index 0000000..220ba68 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.bat @@ -0,0 +1,11 @@ +@echo off + +rem Vivado (TM) +rem runme.bat: a Vivado-generated Script +rem Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. + + +set HD_SDIR=%~dp0 +cd /d "%HD_SDIR%" +set PATH=%SYSTEMROOT%\system32;%PATH% +cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %* diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log new file mode 100644 index 0000000..e97a2e2 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log @@ -0,0 +1,341 @@ + +*** Running vivado + with args -log midpoint.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl + + +****** Vivado v2017.2 (64-bit) + **** SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 + **** IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 + ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. + +source midpoint.tcl -notrace +Command: synth_design -top midpoint -part xc7z010clg400-1 +Starting synth_design +Attempting to get a license for feature 'Synthesis' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xc7z010-clg400' +INFO: Launching helper process for spawning children vivado processes +INFO: Helper process launched with PID 7265 +--------------------------------------------------------------------------------- +Starting RTL Elaboration : Time (s): cpu = 00:00:03 ; elapsed = 00:00:06 . Memory (MB): peak = 1136.637 ; gain = 38.996 ; free physical = 303 ; free virtual = 2062 +--------------------------------------------------------------------------------- +INFO: [Synth 8-638] synthesizing module 'midpoint' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v:6] + Parameter width bound to: 8 - type: integer +INFO: [Synth 8-638] synthesizing module 'inputconditioner' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v:9] + Parameter counterwidth bound to: 3 - type: integer + Parameter waittime bound to: 3 - type: integer +INFO: [Synth 8-256] done synthesizing module 'inputconditioner' (1#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v:9] +INFO: [Synth 8-638] synthesizing module 'shiftregister' [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:9] + Parameter width bound to: 8 - type: integer +INFO: [Synth 8-256] done synthesizing module 'shiftregister' (2#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:9] +INFO: [Synth 8-256] done synthesizing module 'midpoint' (3#1) [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v:6] +--------------------------------------------------------------------------------- +Finished RTL Elaboration : Time (s): cpu = 00:00:04 ; elapsed = 00:00:07 . Memory (MB): peak = 1177.137 ; gain = 79.496 ; free physical = 311 ; free virtual = 2072 +--------------------------------------------------------------------------------- + +Report Check Netlist: ++------+------------------+-------+---------+-------+------------------+ +| |Item |Errors |Warnings |Status |Description | ++------+------------------+-------+---------+-------+------------------+ +|1 |multi_driven_nets | 0| 0|Passed |Multi driven nets | ++------+------------------+-------+---------+-------+------------------+ +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 1 : Time (s): cpu = 00:00:04 ; elapsed = 00:00:07 . Memory (MB): peak = 1177.137 ; gain = 79.496 ; free physical = 311 ; free virtual = 2072 +--------------------------------------------------------------------------------- +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization + +Processing XDC Constraints +Initializing timing engine +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +WARNING: [Vivado 12-584] No ports matched 'sw[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:13] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:14] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:15] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'sw[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:16] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:20] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:21] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:22] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'btn[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:23] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[0]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:27] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[1]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:28] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[2]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:29] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +WARNING: [Vivado 12-584] No ports matched 'led[3]'. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +CRITICAL WARNING: [Common 17-55] 'set_property' expects at least one object. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc:30] +Resolution: If [get_] was used to populate the object, check to make sure this command returns at least one valid object. +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Project 1-236] Implementation specific constraints were found while reading constraint file [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc]. These constraints will be ignored for synthesis but will be used in implementation. Impacted constraints are listed in the file [.Xil/midpoint_propImpl.xdc]. +Resolution: To avoid this warning, move constraints listed in [.Xil/midpoint_propImpl.xdc] to another XDC file and exclude this new file from synthesis with the used_in_synthesis property (File Properties dialog in GUI) and re-run elaboration/synthesis. +Completed Processing XDC Constraints + +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +Constraint Validation Runtime : Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1466.039 ; gain = 0.000 ; free physical = 123 ; free virtual = 1888 +--------------------------------------------------------------------------------- +Finished Constraint Validation : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 187 ; free virtual = 1952 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Loading Part and Timing Information +--------------------------------------------------------------------------------- +Loading part: xc7z010clg400-1 +--------------------------------------------------------------------------------- +Finished Loading Part and Timing Information : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 187 ; free virtual = 1952 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Applying 'set_property' XDC Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished applying 'set_property' XDC Constraints : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 188 ; free virtual = 1953 +--------------------------------------------------------------------------------- +INFO: [Synth 8-5544] ROM "conditioned" won't be mapped to Block RAM because address size (3) smaller than threshold (5) +--------------------------------------------------------------------------------- +Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 178 ; free virtual = 1944 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start RTL Component Statistics +--------------------------------------------------------------------------------- +Detailed RTL Component Info : ++---Adders : + 2 Input 3 Bit Adders := 3 ++---Registers : + 8 Bit Registers := 2 + 3 Bit Registers := 3 + 1 Bit Registers := 16 ++---Muxes : + 2 Input 8 Bit Muxes := 2 + 2 Input 3 Bit Muxes := 3 + 2 Input 1 Bit Muxes := 17 +--------------------------------------------------------------------------------- +Finished RTL Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start RTL Hierarchical Component Statistics +--------------------------------------------------------------------------------- +Hierarchical RTL Component report +Module inputconditioner +Detailed RTL Component Info : ++---Adders : + 2 Input 3 Bit Adders := 1 ++---Registers : + 3 Bit Registers := 1 + 1 Bit Registers := 5 ++---Muxes : + 2 Input 3 Bit Muxes := 1 + 2 Input 1 Bit Muxes := 5 +Module shiftregister +Detailed RTL Component Info : ++---Registers : + 8 Bit Registers := 2 + 1 Bit Registers := 1 ++---Muxes : + 2 Input 8 Bit Muxes := 2 + 2 Input 1 Bit Muxes := 2 +--------------------------------------------------------------------------------- +Finished RTL Hierarchical Component Statistics +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Part Resource Summary +--------------------------------------------------------------------------------- +Part Resources: +DSPs: 80 (col length:40) +BRAMs: 120 (col length: RAMB18 40 RAMB36 20) +--------------------------------------------------------------------------------- +Finished Part Resource Summary +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Cross Boundary and Area Optimization +--------------------------------------------------------------------------------- +WARNING: [Synth 8-6014] Unused sequential element shift/serialDataOut_reg was removed. [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v:30] +WARNING: [Synth 8-3332] Sequential element (parallelLoadCond/positiveedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/synchronizer0_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/synchronizer1_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/conditioned_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[2]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[1]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/counter_reg[0]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/positiveedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (serialInCond/negativeedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (SCLKCond/negativeedge_reg) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (parallelLoadCond/counter_reg[2]) is unused and will be removed from module midpoint. +WARNING: [Synth 8-3332] Sequential element (SCLKCond/counter_reg[2]) is unused and will be removed from module midpoint. +--------------------------------------------------------------------------------- +Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:12 ; elapsed = 00:00:21 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 174 ; free virtual = 1940 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Applying XDC Timing Constraints +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Applying XDC Timing Constraints : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 65 ; free virtual = 1806 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Timing Optimization +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Timing Optimization : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 65 ; free virtual = 1806 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Technology Mapping +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Technology Mapping : Time (s): cpu = 00:00:18 ; elapsed = 00:00:32 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 97 ; free virtual = 1796 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Flattening Before IO Insertion +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Final Netlist Cleanup +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished IO Insertion : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- + +Report Check Netlist: ++------+------------------+-------+---------+-------+------------------+ +| |Item |Errors |Warnings |Status |Description | ++------+------------------+-------+---------+-------+------------------+ +|1 |multi_driven_nets | 0| 0|Passed |Multi driven nets | ++------+------------------+-------+---------+-------+------------------+ +--------------------------------------------------------------------------------- +Start Renaming Generated Instances +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Instances : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- + +Report RTL Partitions: ++-+--------------+------------+----------+ +| |RTL Partition |Replication |Instances | ++-+--------------+------------+----------+ ++-+--------------+------------+----------+ +--------------------------------------------------------------------------------- +Start Rebuilding User Hierarchy +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Ports +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Ports : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1794 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Handling Custom Attributes +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Handling Custom Attributes : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Renaming Generated Nets +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Finished Renaming Generated Nets : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +Start Writing Synthesis Report +--------------------------------------------------------------------------------- + +Report BlackBoxes: ++-+--------------+----------+ +| |BlackBox name |Instances | ++-+--------------+----------+ ++-+--------------+----------+ + +Report Cell Usage: ++------+-----+------+ +| |Cell |Count | ++------+-----+------+ +|1 |BUFG | 1| +|2 |LUT1 | 1| +|3 |LUT2 | 1| +|4 |LUT3 | 2| +|5 |LUT4 | 12| +|6 |LUT5 | 2| +|7 |FDRE | 28| +|8 |IBUF | 12| +|9 |OBUF | 8| ++------+-----+------+ + +Report Instance Areas: ++------+-------------------+-------------------+------+ +| |Instance |Module |Cells | ++------+-------------------+-------------------+------+ +|1 |top | | 67| +|2 | SCLKCond |inputconditioner | 10| +|3 | parallelLoadCond |inputconditioner_0 | 11| +|4 | shift |shiftregister | 25| ++------+-------------------+-------------------+------+ +--------------------------------------------------------------------------------- +Finished Writing Synthesis Report : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.039 ; gain = 368.398 ; free physical = 95 ; free virtual = 1795 +--------------------------------------------------------------------------------- +Synthesis finished with 0 errors, 0 critical warnings and 13 warnings. +Synthesis Optimization Runtime : Time (s): cpu = 00:00:14 ; elapsed = 00:00:25 . Memory (MB): peak = 1466.039 ; gain = 79.496 ; free physical = 154 ; free virtual = 1853 +Synthesis Optimization Complete : Time (s): cpu = 00:00:18 ; elapsed = 00:00:33 . Memory (MB): peak = 1466.047 ; gain = 368.398 ; free physical = 157 ; free virtual = 1856 +INFO: [Project 1-571] Translating synthesized netlist +INFO: [Netlist 29-17] Analyzing 12 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-570] Preparing netlist for logic optimization +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +18 Infos, 25 Warnings, 12 Critical Warnings and 0 Errors encountered. +synth_design completed successfully +synth_design: Time (s): cpu = 00:00:19 ; elapsed = 00:00:35 . Memory (MB): peak = 1466.047 ; gain = 380.992 ; free physical = 119 ; free virtual = 1819 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp' has been generated. +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.22 . Memory (MB): peak = 1466.047 ; gain = 0.000 ; free physical = 119 ; free virtual = 1820 +INFO: [Common 17-206] Exiting Vivado at Tue Oct 24 20:06:28 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh new file mode 100755 index 0000000..d019ecf --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# +# Vivado(TM) +# runme.sh: a Vivado-generated Runs Script for UNIX +# Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +# + +if [ -z "$PATH" ]; then + PATH=/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64:/opt/Xilinx/Vivado/2017.2/bin +else + PATH=/opt/Xilinx/SDK/2017.2/bin:/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/bin/lin64:/opt/Xilinx/Vivado/2017.2/bin:$PATH +fi +export PATH + +if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH=/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64 +else + LD_LIBRARY_PATH=/opt/Xilinx/Vivado/2017.2/ids_lite/ISE/lib/lin64:$LD_LIBRARY_PATH +fi +export LD_LIBRARY_PATH + +HD_PWD='/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1' +cd "$HD_PWD" + +HD_LOG=runme.log +/bin/touch $HD_LOG + +ISEStep="./ISEWrap.sh" +EAStep() +{ + $ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1 + if [ $? -ne 0 ] + then + exit + fi +} + +EAStep vivado -log midpoint.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou b/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou new file mode 100644 index 0000000..6c2f90e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou @@ -0,0 +1,12 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Tue Oct 24 20:05:38 2017 +# Process ID: 7257 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1 +# Command line: vivado -log midpoint.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source midpoint.tcl +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.vds +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou +#----------------------------------------------------------- +source midpoint.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.pb b/Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.pb new file mode 100644 index 0000000000000000000000000000000000000000..26519041a071d1cca7ec161a60ae4191700e6f91 GIT binary patch literal 40234 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 literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc b/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc new file mode 100644 index 0000000..f3dbb71 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc @@ -0,0 +1,146 @@ +## 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 +set_property -dict { PACKAGE_PIN L16 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L11P_T1_SRCC_35 Sch=sysclk +#create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { clk }]; + + +##Switches +set_property -dict { PACKAGE_PIN G15 IOSTANDARD LVCMOS33 } [get_ports { sw[0] }]; #IO_L19N_T3_VREF_35 Sch=SW0 +set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports { sw[1] }]; #IO_L24P_T3_34 Sch=SW1 +set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } [get_ports { sw[2] }]; #IO_L4N_T0_34 Sch=SW2 +set_property -dict { PACKAGE_PIN T16 IOSTANDARD LVCMOS33 } [get_ports { sw[3] }]; #IO_L9P_T1_DQS_34 Sch=SW3 + + +##Buttons +set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports { btn[0] }]; #IO_L20N_T3_34 Sch=BTN0 +set_property -dict { PACKAGE_PIN P16 IOSTANDARD LVCMOS33 } [get_ports { btn[1] }]; #IO_L24N_T3_34 Sch=BTN1 +set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { btn[2] }]; #IO_L18P_T2_34 Sch=BTN2 +set_property -dict { PACKAGE_PIN Y16 IOSTANDARD LVCMOS33 } [get_ports { btn[3] }]; #IO_L7P_T1_34 Sch=BTN3 + + +##LEDs +set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led[0] }]; #IO_L23P_T3_35 Sch=LED0 +set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led[1] }]; #IO_L23N_T3_35 Sch=LED1 +set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led[2] }]; #IO_0_35=Sch=LED2 +set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led[3] }]; #IO_L3N_T0_DQS_AD1N_35 Sch=LED3 + + +##I2S Audio Codec +#set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports ac_bclk]; #IO_L12N_T1_MRCC_35 Sch=AC_BCLK +#set_property -dict { PACKAGE_PIN T19 IOSTANDARD LVCMOS33 } [get_ports ac_mclk]; #IO_25_34 Sch=AC_MCLK +#set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports ac_muten]; #IO_L23N_T3_34 Sch=AC_MUTEN +#set_property -dict { PACKAGE_PIN M17 IOSTANDARD LVCMOS33 } [get_ports ac_pbdat]; #IO_L8P_T1_AD10P_35 Sch=AC_PBDAT +#set_property -dict { PACKAGE_PIN L17 IOSTANDARD LVCMOS33 } [get_ports ac_pblrc]; #IO_L11N_T1_SRCC_35 Sch=AC_PBLRC +#set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports ac_recdat]; #IO_L12P_T1_MRCC_35 Sch=AC_RECDAT +#set_property -dict { PACKAGE_PIN M18 IOSTANDARD LVCMOS33 } [get_ports ac_reclrc]; #IO_L8N_T1_AD10N_35 Sch=AC_RECLRC + + +##Audio Codec/external EEPROM IIC bus +#set_property -dict { PACKAGE_PIN N18 IOSTANDARD LVCMOS33 } [get_ports ac_scl]; #IO_L13P_T2_MRCC_34 Sch=AC_SCL +#set_property -dict { PACKAGE_PIN N17 IOSTANDARD LVCMOS33 } [get_ports ac_sda]; #IO_L23P_T3_34 Sch=AC_SDA + + +##Additional Ethernet signals +#set_property -dict { PACKAGE_PIN F16 IOSTANDARD LVCMOS33 } [get_ports eth_int_b]; #IO_L6P_T0_35 Sch=ETH_INT_B +#set_property -dict { PACKAGE_PIN E17 IOSTANDARD LVCMOS33 } [get_ports eth_rst_b]; #IO_L3P_T0_DQS_AD1P_35 Sch=ETH_RST_B + + +##HDMI Signals +#set_property -dict { PACKAGE_PIN H17 IOSTANDARD TMDS_33 } [get_ports hdmi_clk_n]; #IO_L13N_T2_MRCC_35 Sch=HDMI_CLK_N +#set_property -dict { PACKAGE_PIN H16 IOSTANDARD TMDS_33 } [get_ports hdmi_clk_p]; #IO_L13P_T2_MRCC_35 Sch=HDMI_CLK_P +#set_property -dict { PACKAGE_PIN D20 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_n[0] }]; #IO_L4N_T0_35 Sch=HDMI_D0_N +#set_property -dict { PACKAGE_PIN D19 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_p[0] }]; #IO_L4P_T0_35 Sch=HDMI_D0_P +#set_property -dict { PACKAGE_PIN B20 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_n[1] }]; #IO_L1N_T0_AD0N_35 Sch=HDMI_D1_N +#set_property -dict { PACKAGE_PIN C20 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_p[1] }]; #IO_L1P_T0_AD0P_35 Sch=HDMI_D1_P +#set_property -dict { PACKAGE_PIN A20 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_n[2] }]; #IO_L2N_T0_AD8N_35 Sch=HDMI_D2_N +#set_property -dict { PACKAGE_PIN B19 IOSTANDARD TMDS_33 } [get_ports { hdmi_d_p[2] }]; #IO_L2P_T0_AD8P_35 Sch=HDMI_D2_P +#set_property -dict { PACKAGE_PIN E19 IOSTANDARD LVCMOS33 } [get_ports hdmi_cec]; #IO_L5N_T0_AD9N_35 Sch=HDMI_CEC +#set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports hdmi_hpd]; #IO_L5P_T0_AD9P_35 Sch=HDMI_HPD +#set_property -dict { PACKAGE_PIN F17 IOSTANDARD LVCMOS33 } [get_ports hdmi_out_en]; #IO_L6N_T0_VREF_35 Sch=HDMI_OUT_EN +#set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports hdmi_scl]; #IO_L16P_T2_35 Sch=HDMI_SCL +#set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports hdmi_sda]; #IO_L16N_T2_35 Sch=HDMI_SDA + + +##Pmod Header JA (XADC) +#set_property -dict { PACKAGE_PIN N15 IOSTANDARD LVCMOS33 } [get_ports { ja_p[0] }]; #IO_L21P_T3_DQS_AD14P_35 Sch=JA1_R_p +#set_property -dict { PACKAGE_PIN L14 IOSTANDARD LVCMOS33 } [get_ports { ja_p[1] }]; #IO_L22P_T3_AD7P_35 Sch=JA2_R_P +#set_property -dict { PACKAGE_PIN K16 IOSTANDARD LVCMOS33 } [get_ports { ja_p[2] }]; #IO_L24P_T3_AD15P_35 Sch=JA3_R_P +#set_property -dict { PACKAGE_PIN K14 IOSTANDARD LVCMOS33 } [get_ports { ja_p[3] }]; #IO_L20P_T3_AD6P_35 Sch=JA4_R_P +#set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { ja_n[0] }]; #IO_L21N_T3_DQS_AD14N_35 Sch=JA1_R_N +#set_property -dict { PACKAGE_PIN L15 IOSTANDARD LVCMOS33 } [get_ports { ja_n[1] }]; #IO_L22N_T3_AD7N_35 Sch=JA2_R_N +#set_property -dict { PACKAGE_PIN J16 IOSTANDARD LVCMOS33 } [get_ports { ja_n[2] }]; #IO_L24N_T3_AD15N_35 Sch=JA3_R_N +#set_property -dict { PACKAGE_PIN J14 IOSTANDARD LVCMOS33 } [get_ports { ja_n[3] }]; #IO_L20N_T3_AD6N_35 Sch=JA4_R_N + + +##Pmod Header JB +#set_property -dict { PACKAGE_PIN T20 IOSTANDARD LVCMOS33 } [get_ports { jb_p[0] }]; #IO_L15P_T2_DQS_34 Sch=JB1_p +#set_property -dict { PACKAGE_PIN U20 IOSTANDARD LVCMOS33 } [get_ports { jb_n[0] }]; #IO_L15N_T2_DQS_34 Sch=JB1_N +#set_property -dict { PACKAGE_PIN V20 IOSTANDARD LVCMOS33 } [get_ports { jb_p[1] }]; #IO_L16P_T2_34 Sch=JB2_P +#set_property -dict { PACKAGE_PIN W20 IOSTANDARD LVCMOS33 } [get_ports { jb_n[1] }]; #IO_L16N_T2_34 Sch=JB2_N +#set_property -dict { PACKAGE_PIN Y18 IOSTANDARD LVCMOS33 } [get_ports { jb_p[2] }]; #IO_L17P_T2_34 Sch=JB3_P +#set_property -dict { PACKAGE_PIN Y19 IOSTANDARD LVCMOS33 } [get_ports { jb_n[2] }]; #IO_L17N_T2_34 Sch=JB3_N +#set_property -dict { PACKAGE_PIN W18 IOSTANDARD LVCMOS33 } [get_ports { jb_p[3] }]; #IO_L22P_T3_34 Sch=JB4_P +#set_property -dict { PACKAGE_PIN W19 IOSTANDARD LVCMOS33 } [get_ports { jb_n[3] }]; #IO_L22N_T3_34 Sch=JB4_N + + +##Pmod Header JC +#set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { jc_p[0] }]; #IO_L10P_T1_34 Sch=JC1_P +#set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports { jc_n[0] }]; #IO_L10N_T1_34 Sch=JC1_N +#set_property -dict { PACKAGE_PIN T11 IOSTANDARD LVCMOS33 } [get_ports { jc_p[1] }]; #IO_L1P_T0_34 Sch=JC2_P +#set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { jc_n[1] }]; #IO_L1N_T0_34 Sch=JC2_N +#set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } [get_ports { jc_p[2] }]; #IO_L8P_T1_34 Sch=JC3_P +#set_property -dict { PACKAGE_PIN Y14 IOSTANDARD LVCMOS33 } [get_ports { jc_n[2] }]; #IO_L8N_T1_34 Sch=JC3_N +#set_property -dict { PACKAGE_PIN T12 IOSTANDARD LVCMOS33 } [get_ports { jc_p[3] }]; #IO_L2P_T0_34 Sch=JC4_P +#set_property -dict { PACKAGE_PIN U12 IOSTANDARD LVCMOS33 } [get_ports { jc_n[3] }]; #IO_L2N_T0_34 Sch=JC4_N + + +##Pmod Header JD +#set_property -dict { PACKAGE_PIN T14 IOSTANDARD LVCMOS33 } [get_ports { jd_p[0] }]; #IO_L5P_T0_34 Sch=JD1_P +#set_property -dict { PACKAGE_PIN T15 IOSTANDARD LVCMOS33 } [get_ports { jd_n[0] }]; #IO_L5N_T0_34 Sch=JD1_N +#set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { jd_p[1] }]; #IO_L6P_T0_34 Sch=JD2_P +#set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { jd_n[1] }]; #IO_L6N_T0_VREF_34 Sch=JD2_N +#set_property -dict { PACKAGE_PIN U14 IOSTANDARD LVCMOS33 } [get_ports { jd_p[2] }]; #IO_L11P_T1_SRCC_34 Sch=JD3_P +#set_property -dict { PACKAGE_PIN U15 IOSTANDARD LVCMOS33 } [get_ports { jd_n[2] }]; #IO_L11N_T1_SRCC_34 Sch=JD3_N +#set_property -dict { PACKAGE_PIN V17 IOSTANDARD LVCMOS33 } [get_ports { jd_p[3] }]; #IO_L21P_T3_DQS_34 Sch=JD4_P +#set_property -dict { PACKAGE_PIN V18 IOSTANDARD LVCMOS33 } [get_ports { jd_n[3] }]; #IO_L21N_T3_DQS_34 Sch=JD4_N + + +##Pmod Header JE +#set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { je[0] }]; #IO_L4P_T0_34 Sch=JE1 +#set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports { je[1] }]; #IO_L18N_T2_34 Sch=JE2 +#set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { je[2] }]; #IO_25_35 Sch=JE3 +#set_property -dict { PACKAGE_PIN H15 IOSTANDARD LVCMOS33 } [get_ports { je[3] }]; #IO_L19P_T3_35 Sch=JE4 +#set_property -dict { PACKAGE_PIN V13 IOSTANDARD LVCMOS33 } [get_ports { je[4] }]; #IO_L3N_T0_DQS_34 Sch=JE7 +#set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports { je[5] }]; #IO_L9N_T1_DQS_34 Sch=JE8 +#set_property -dict { PACKAGE_PIN T17 IOSTANDARD LVCMOS33 } [get_ports { je[6] }]; #IO_L20P_T3_34 Sch=JE9 +#set_property -dict { PACKAGE_PIN Y17 IOSTANDARD LVCMOS33 } [get_ports { je[7] }]; #IO_L7N_T1_34 Sch=JE10 + + +##USB-OTG overcurrent detect pin +#set_property -dict { PACKAGE_PIN U13 IOSTANDARD LVCMOS33 } [get_ports otg_oc]; #IO_L3P_T0_DQS_PUDC_B_34 Sch=OTG_OC + + +##VGA Connector +#set_property -dict { PACKAGE_PIN M19 IOSTANDARD LVCMOS33 } [get_ports { vga_r[0] }]; #IO_L7P_T1_AD2P_35 Sch=VGA_R1 +#set_property -dict { PACKAGE_PIN L20 IOSTANDARD LVCMOS33 } [get_ports { vga_r[1] }]; #IO_L9N_T1_DQS_AD3N_35 Sch=VGA_R2 +#set_property -dict { PACKAGE_PIN J20 IOSTANDARD LVCMOS33 } [get_ports { vga_r[2] }]; #IO_L17P_T2_AD5P_35 Sch=VGA_R3 +#set_property -dict { PACKAGE_PIN G20 IOSTANDARD LVCMOS33 } [get_ports { vga_r[3] }]; #IO_L18N_T2_AD13N_35 Sch=VGA_R4 +#set_property -dict { PACKAGE_PIN F19 IOSTANDARD LVCMOS33 } [get_ports { vga_r[4] }]; #IO_L15P_T2_DQS_AD12P_35 Sch=VGA_R5 +#set_property -dict { PACKAGE_PIN H18 IOSTANDARD LVCMOS33 } [get_ports { vga_g[0] }]; #IO_L14N_T2_AD4N_SRCC_35 Sch=VGA_G0 +#set_property -dict { PACKAGE_PIN N20 IOSTANDARD LVCMOS33 } [get_ports { vga_g[1] }]; #IO_L14P_T2_SRCC_34 Sch=VGA_G1 +#set_property -dict { PACKAGE_PIN L19 IOSTANDARD LVCMOS33 } [get_ports { vga_g[2] }]; #IO_L9P_T1_DQS_AD3P_35 Sch=VGA_G2 +#set_property -dict { PACKAGE_PIN J19 IOSTANDARD LVCMOS33 } [get_ports { vga_g[3] }]; #IO_L10N_T1_AD11N_35 Sch=VGA_G3 +#set_property -dict { PACKAGE_PIN H20 IOSTANDARD LVCMOS33 } [get_ports { vga_g[4] }]; #IO_L17N_T2_AD5N_35 Sch=VGA_G4 +#set_property -dict { PACKAGE_PIN F20 IOSTANDARD LVCMOS33 } [get_ports { vga_g[5] }]; #IO_L15N_T2_DQS_AD12N_35 Sch=VGA=G5 +#set_property -dict { PACKAGE_PIN P20 IOSTANDARD LVCMOS33 } [get_ports { vga_b[0] }]; #IO_L14N_T2_SRCC_34 Sch=VGA_B1 +#set_property -dict { PACKAGE_PIN M20 IOSTANDARD LVCMOS33 } [get_ports { vga_b[1] }]; #IO_L7N_T1_AD2N_35 Sch=VGA_B2 +#set_property -dict { PACKAGE_PIN K19 IOSTANDARD LVCMOS33 } [get_ports { vga_b[2] }]; #IO_L10P_T1_AD11P_35 Sch=VGA_B3 +#set_property -dict { PACKAGE_PIN J18 IOSTANDARD LVCMOS33 } [get_ports { vga_b[3] }]; #IO_L14P_T2_AD4P_SRCC_35 Sch=VGA_B4 +#set_property -dict { PACKAGE_PIN G19 IOSTANDARD LVCMOS33 } [get_ports { vga_b[4] }]; #IO_L18P_T2_AD13P_35 Sch=VGA_B5 +#set_property -dict { PACKAGE_PIN P19 IOSTANDARD LVCMOS33 } [get_ports vga_hs]; #IO_L13N_T2_MRCC_34 Sch=VGA_HS +#set_property -dict { PACKAGE_PIN R19 IOSTANDARD LVCMOS33 } [get_ports vga_vs]; #IO_0_34 Sch=VGA_VS diff --git a/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v new file mode 100644 index 0000000..7940cce --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/inputconditioner.v @@ -0,0 +1,52 @@ +//------------------------------------------------------------------------ +// Input Conditioner +// 1) Synchronizes input to clock domain +// 2) Debounces input +// 3) Creates pulses at edge transitions +//------------------------------------------------------------------------ +// 50 MHz is 2 * 1-^-8 seconds per cycle + +module inputconditioner +( +input clk, // Clock domain to synchronize input to +input noisysignal, // (Potentially) noisy input signal +output reg conditioned, // Conditioned output signal +output reg positiveedge, // 1 clk pulse at rising edge of conditioned +output reg negativeedge // 1 clk pulse at falling edge of conditioned +); + + parameter counterwidth = 3; // Counter size, in bits, >= log2(waittime) (maybe this could be 2 since 2^2 > 3) + parameter waittime = 3; // Debounce delay, in clock cycles + + reg[counterwidth-1:0] counter = 0; + reg synchronizer0 = 0; + reg synchronizer1 = 0; // you need 2 synchronizers so you can calculate + and - edge + +always @(posedge clk ) begin + +if(conditioned == synchronizer1) + counter <= 0; +else begin + if(counter == waittime) begin + counter <= 0; + conditioned <= synchronizer1; + if(conditioned == 0 & synchronizer1 ==1) + positiveedge <= 1; + if(conditioned == 1 & synchronizer1 ==0) + negativeedge <= 1; + end + else + counter <= counter+1; +end // end to the else begin statement + +if(positiveedge == 1) + positiveedge <= 0; +if(negativeedge == 1) + negativeedge <= 0; + +synchronizer0 <= noisysignal; // these happen every time there's a clk edge +synchronizer1 <= synchronizer0; +end + +endmodule + diff --git a/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v new file mode 100644 index 0000000..49a8f26 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/midpoint.v @@ -0,0 +1,40 @@ +// Midpoint deliverable file + +`include "inputconditioner.v" +`include "shiftregister.v" + +module midpoint +#(parameter width = 8) +( +input switch0, // SerialDataIn +input switch1, // peripheralClkEdge +input button, // ParallelLoad +input clk, +input [width-1:0] parallelDataIn, +output wire [width-1:0] parallelDataOut2 +); + +wire conditioned0; +wire positiveedge0; +wire negativeedge0; + +wire conditioned1; +wire positiveedge1; +wire negativeedge1; + +wire conditioned2; +wire positiveedge2; +wire negativeedge2; + +wire serialDataOut; + +inputconditioner parallelLoadCond(clk, button, conditioned0, positiveedge0, negativeedge0); // negativeedge0 is your cleaned up button/ParallelLoad + +inputconditioner serialInCond(clk, switch0, conditioned1, positiveedge1, negativeedge1); // conditioned1 is your cleaned up SerialDataIn + +inputconditioner SCLKCond(clk, switch1, conditioned2, positiveedge2, negativeedge2); // positiveedge2 is your cleaned up peripheralClkEdge + +shiftregister shift(clk, positiveedge2, negativeedge0, parallelDataIn, switch0, parallelDataOut2, serialDataOut); + + +endmodule diff --git a/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v new file mode 100644 index 0000000..7282549 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/shiftregister.v @@ -0,0 +1,79 @@ +//------------------------------------------------------------------------ +// Shift Register +// Parameterized width (in bits) +// Shift register can operate in two modes: +// - serial in, parallel out +// - parallel in, serial out +//------------------------------------------------------------------------ + +module shiftregister +#(parameter width = 8) +( +input clk, // FPGA Clock +input peripheralClkEdge, // Edge indicator +input parallelLoad, // 1 = Load shift reg with parallelDataIn +input [width-1:0] parallelDataIn, // Load shift reg in parallel +input serialDataIn, // Load shift reg serially +output reg [width-1:0] parallelDataOut, // Shift reg data contents +output reg serialDataOut // Positive edge synchronized +); + +reg [width-1:0] shiftregistermem; + +//wire serialDataOut; + +always @(posedge clk) begin + + if(parallelLoad ==1) begin // do thisfor parallel data in + + shiftregistermem <= parallelDataIn; + serialDataOut <= shiftregistermem[width-1]; + //parallelDataOut <= shiftregistermem; + + end + + if(parallelLoad ==0) begin // We are deciding that parallelLoad will win. This takes priority over serial shift - peripheralClkEdge only matters if parallelLoad = 0. + if (peripheralClkEdge == 1) begin + + shiftregistermem[1] <= shiftregistermem[0]; + shiftregistermem[2] <= shiftregistermem[1]; + shiftregistermem[3] <= shiftregistermem[2]; + shiftregistermem[4] <= shiftregistermem[3]; + shiftregistermem[5] <= shiftregistermem[4]; + shiftregistermem[6] <= shiftregistermem[5]; + shiftregistermem[7] <= shiftregistermem[6]; + shiftregistermem[0] <= serialDataIn; + //shiftregistermem <= {{shiftregistermem[width-2:0]}, {serialDataIn}}; + end + parallelDataOut <= shiftregistermem; + + end + +end + +endmodule + +// general thoughts: make a loop that happens width # of times, +// and then use the idea behind the behavioral flip flop below +// so that you can pass things along as needed. + +// from the assignment: +// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. +// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " + + +/*module flipflop +( +output reg q, +input d, +input wrenable, +input clk +); + always @(posedge clk) begin + if(wrenable) begin + q = d; + end + end +endmodule */ + + diff --git a/Lab2Vivado/Lab2Vivado.xpr b/Lab2Vivado/Lab2Vivado.xpr new file mode 100644 index 0000000..c528fd3 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.xpr @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shiftregister.t.v b/shiftregister.t.v index 1129f19..dc7aee0 100644 --- a/shiftregister.t.v +++ b/shiftregister.t.v @@ -14,6 +14,7 @@ module testshiftregister(); reg[7:0] parallelDataIn; reg serialDataIn; + // Instantiate with parameter width = 8 shiftregister #(8) dut(.clk(clk), .peripheralClkEdge(peripheralClkEdge), @@ -24,37 +25,45 @@ module testshiftregister(); .serialDataOut(serialDataOut)); -initial clk=0; -always #10 clk=!clk; // 50MHz Clock - - + initial clk=0; + always #10 clk=!clk; // 50MHz Clock + initial begin $dumpfile("shiftregister.vcd"); $dumpvars(); + +// Check Parallel In, Serial Out $display("PIn? | PDataIn | SDataOut"); - parallelLoad =1; parallelDataIn = 8'b00011111; #20 - $display("%b | %b | %b ", parallelLoad, parallelDataIn, serialDataOut); - parallelLoad =1; parallelDataIn = 8'b00111101; #20 - $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); - parallelLoad =1; parallelDataIn = 8'b10011110; #20 - $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); - - - - $display("PIn? | PClock| SDataIn | PDataOut"); - parallelLoad =0; peripheralClkEdge = 1; serialDataIn = 1; #20 - $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); - parallelLoad =0; peripheralClkEdge = 0; serialDataIn = 1; #20 - $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); - parallelLoad =0; peripheralClkEdge = 1; serialDataIn = 0; #20 - $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); - parallelLoad =0; peripheralClkEdge = 0; serialDataIn = 0; #20 - $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); - parallelLoad =0; peripheralClkEdge =1; serialDataIn = 0; #20 - $display("%b | %b | %b | %b ", parallelLoad, peripheralClkEdge, serialDataIn, parallelDataOut); + parallelLoad =1; parallelDataIn = 8'b00011111; #40 + $display("%b | %b | %b ", parallelLoad, parallelDataIn, serialDataOut); // expect 0 + parallelLoad =1; parallelDataIn = 8'b00111110; #40 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); // expect 0 + parallelLoad =1; parallelDataIn = 8'b01111101; #40 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); // expect 0 + parallelLoad =1; parallelDataIn = 8'b11111010; #40 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); // expect 1 + parallelLoad =1; parallelDataIn = 8'b11110100; #40 + $display("%b | %b | %b", parallelLoad, parallelDataIn, serialDataOut); // expect 1 + +// Check Serial In, Parallel Out +// This is what we'll want to do on the FPGA + + $display("PIn? | SDataIn | PDataOut"); + parallelLoad =0; serialDataIn = 1; peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); + parallelLoad =0; serialDataIn = 1;peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); + parallelLoad =0; serialDataIn = 0;peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); + parallelLoad =0; serialDataIn = 0;peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); + parallelLoad =0; serialDataIn = 0;peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); + parallelLoad =0; serialDataIn = 1;peripheralClkEdge = 1; #21 + $display("%b | %b | %b ", parallelLoad, serialDataIn, parallelDataOut); $finish; diff --git a/shiftregister.v b/shiftregister.v index 6161c05..6e874a2 100644 --- a/shiftregister.v +++ b/shiftregister.v @@ -18,63 +18,39 @@ output reg [width-1:0] parallelDataOut, // Shift reg data contents output reg serialDataOut // Positive edge synchronized ); -reg [width-1:0] shiftregistermem; +reg [width-1:0] shiftregistermem; //wire serialDataOut; always @(posedge clk) begin - if(parallelLoad ==1) begin // do thisfor parallel data in - shiftregistermem <= parallelDataIn; serialDataOut <= shiftregistermem[width-1]; - parallelDataOut <= shiftregistermem; - end - if(parallelLoad ==0) begin // We are deciding that parallelLoad will win. This takes priority over serial shift - peripheralClkEdge only matters if parallelLoad = 0. + else if(parallelLoad ==0) begin // We are deciding that parallelLoad will win. This takes priority over serial shift - peripheralClkEdge only matters if parallelLoad = 0. if (peripheralClkEdge == 1) begin - shiftregistermem[1] <= shiftregistermem[0]; - shiftregistermem[2] <= shiftregistermem[1]; - shiftregistermem[3] <= shiftregistermem[2]; - shiftregistermem[4] <= shiftregistermem[3]; - shiftregistermem[5] <= shiftregistermem[4]; - shiftregistermem[6] <= shiftregistermem[5]; - shiftregistermem[7] <= shiftregistermem[6]; - shiftregistermem[0] <= serialDataIn; - //shiftregistermem <= {{shiftregistermem[width-2:0]}, {serialDataIn}}; - end + shiftregistermem <= {shiftregistermem[width-2:0], serialDataIn}; parallelDataOut <= shiftregistermem; + end + + end + + end -endmodule -// general thoughts: make a loop that happens width # of times, -// and then use the idea behind the behavioral flip flop below -// so that you can pass things along as needed. -// from the assignment: -// " Each of these four behaviors can be implemented in one or two lines of behavioral Verilog. -// You may want to look at Verilog's {} concatenate syntax for implementing the serial behavior. " -module flipflop -( -output reg q, -input d, -input wrenable, -input clk -); - always @(posedge clk) begin - if(wrenable) begin - q = d; - end - end + + endmodule + diff --git a/shiftregister.vcd b/shiftregister.vcd index 8564bbe..6c28bd9 100644 --- a/shiftregister.vcd +++ b/shiftregister.vcd @@ -1,5 +1,5 @@ $date - Tue Oct 24 18:10:09 2017 + Tue Oct 24 21:53:47 2017 $end $version Icarus Verilog @@ -7,137 +7,185 @@ $end $timescale 1s $end -$scope module flipflop $end -$var wire 1 ! clk $end -$var wire 1 " d $end -$var wire 1 # wrenable $end -$var reg 1 $ q $end -$upscope $end $scope module testshiftregister $end -$var wire 8 % parallelDataOut [7:0] $end -$var wire 1 & serialDataOut $end -$var reg 1 ' clk $end -$var reg 8 ( parallelDataIn [7:0] $end -$var reg 1 ) parallelLoad $end -$var reg 1 * peripheralClkEdge $end -$var reg 1 + serialDataIn $end +$var wire 8 ! parallelDataOut [7:0] $end +$var wire 1 " serialDataOut $end +$var reg 1 # clk $end +$var reg 8 $ parallelDataIn [7:0] $end +$var reg 1 % parallelLoad $end +$var reg 1 & peripheralClkEdge $end +$var reg 1 ' serialDataIn $end $scope module dut $end -$var wire 1 , clk $end -$var wire 8 - parallelDataIn [7:0] $end -$var wire 1 . parallelLoad $end -$var wire 1 / peripheralClkEdge $end -$var wire 1 0 serialDataIn $end -$var reg 8 1 parallelDataOut [7:0] $end -$var reg 1 2 serialDataOut $end -$var reg 8 3 shiftregistermem [7:0] $end +$var wire 1 ( clk $end +$var wire 8 ) parallelDataIn [7:0] $end +$var wire 1 * parallelLoad $end +$var wire 1 + peripheralClkEdge $end +$var wire 1 , serialDataIn $end +$var reg 8 - parallelDataOut [7:0] $end +$var reg 1 . serialDataOut $end +$var reg 8 / shiftregistermem [7:0] $end $upscope $end $upscope $end $enddefinitions $end #0 $dumpvars -bx 3 -x2 -bx 1 -x0 -x/ -1. -b11111 - -0, +bx / +x. +bx - +x, x+ -x* -1) -b11111 ( -0' +1* +b11111 ) +0( +x' x& -bx % -x$ -z# -z" -z! +1% +b11111 $ +0# +x" +bx ! $end #10 -b11111 3 -1' -1, +b11111 / +1# +1( #20 -0' -0, -b111101 ( -b111101 - +0# +0( #30 -b11111 1 -b11111 % -02 -0& -b111101 3 -1' -1, +0. +0" +1# +1( #40 -0' -0, -b10011110 ( -b10011110 - +0# +0( +b111110 $ +b111110 ) #50 -b111101 1 -b111101 % -b10011110 3 -1' -1, +b111110 / +1# +1( #60 -0' -0, -1+ -10 -1* -1/ -0) -0. +0# +0( #70 -b10011110 1 -b10011110 % -b111101 3 -1' -1, +1# +1( #80 -0' -0, -0* -0/ +0# +0( +b1111101 $ +b1111101 ) #90 -b111101 1 -b111101 % -1' -1, +b1111101 / +1# +1( #100 -0' -0, -0+ -00 -1* -1/ +0# +0( #110 -b1111010 3 -1' -1, +1# +1( #120 -0' -0, -0* -0/ +0# +0( +b11111010 $ +b11111010 ) #130 -b1111010 1 -b1111010 % -1' -1, +b11111010 / +1# +1( #140 -0' -0, -1* -1/ +0# +0( #150 -b11110100 3 +1. +1" +1# +1( +#160 +0# +0( +b11110100 $ +b11110100 ) +#170 +b11110100 / +1# +1( +#180 +0# +0( +#190 +1# +1( +#200 +0# +0( +1& +1+ 1' 1, -#160 +0% +0* +#210 +b11110100 - +b11110100 ! +b11101001 / +1# +1( +#220 +0# +0( +#230 +b11101001 - +b11101001 ! +b11010011 / +1# +1( +#240 +0# +0( +#242 0' 0, +#250 +b11010011 - +b11010011 ! +b10100110 / +1# +1( +#260 +0# +0( +#270 +b10100110 - +b10100110 ! +b1001100 / +1# +1( +#280 +0# +0( +#290 +b1001100 - +b1001100 ! +b10011000 / +1# +1( +#300 +0# +0( +#305 +1' +1, +#310 +b10011000 - +b10011000 ! +b110001 / +1# +1( +#320 +0# +0( +#326 diff --git a/test b/test new file mode 100755 index 0000000..88a87b0 --- /dev/null +++ b/test @@ -0,0 +1,153 @@ +#! /usr/bin/vvp +:ivl_version "0.9.7 " "(v0_9_7)"; +:vpi_time_precision + 0; +:vpi_module "system"; +:vpi_module "v2005_math"; +:vpi_module "va_math"; +S_0x1efd730 .scope module, "testshiftregister" "testshiftregister" 2 7; + .timescale 0 0; +v0x1f4ee80_0 .var "clk", 0 0; +v0x1f4ef20_0 .var "parallelDataIn", 7 0; +v0x1f4efd0_0 .net "parallelDataOut", 7 0, v0x1f4ea20_0; 1 drivers +v0x1f4f080_0 .var "parallelLoad", 0 0; +v0x1f4f160_0 .var "peripheralClkEdge", 0 0; +v0x1f4f210_0 .var "serialDataIn", 0 0; +v0x1f4f290_0 .net "serialDataOut", 0 0, v0x1f4ecf0_0; 1 drivers +S_0x1efd820 .scope module, "dut" "shiftregister" 2 19, 3 9, S_0x1efd730; + .timescale 0 0; +P_0x1f350d8 .param/l "width" 3 10, +C4<01000>; +v0x1f32e60_0 .net "clk", 0 0, v0x1f4ee80_0; 1 drivers +v0x1f4e980_0 .net "parallelDataIn", 7 0, v0x1f4ef20_0; 1 drivers +v0x1f4ea20_0 .var "parallelDataOut", 7 0; +v0x1f4eac0_0 .net "parallelLoad", 0 0, v0x1f4f080_0; 1 drivers +v0x1f4eb70_0 .net "peripheralClkEdge", 0 0, v0x1f4f160_0; 1 drivers +v0x1f4ec10_0 .net "serialDataIn", 0 0, v0x1f4f210_0; 1 drivers +v0x1f4ecf0_0 .var "serialDataOut", 0 0; +v0x1f4ed90_0 .var "shiftregistermem", 7 0; +E_0x1f12290 .event posedge, v0x1f32e60_0; + .scope S_0x1efd820; +T_0 ; + %wait E_0x1f12290; + %load/v 8, v0x1f4eac0_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_0.0, 4; + %load/v 8, v0x1f4e980_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x1f4ed90_0, 0, 8; + %ix/load 1, 7, 0; + %mov 4, 0, 1; + %jmp/1 T_0.2, 4; + %load/x1p 8, v0x1f4ed90_0, 1; + %jmp T_0.3; +T_0.2 ; + %mov 8, 2, 1; +T_0.3 ; +; Save base=8 wid=1 in lookaside. + %ix/load 0, 1, 0; + %assign/v0 v0x1f4ecf0_0, 0, 8; + %jmp T_0.1; +T_0.0 ; + %load/v 8, v0x1f4eac0_0, 1; + %mov 9, 0, 1; + %cmpi/u 8, 0, 2; + %jmp/0xz T_0.4, 4; + %load/v 8, v0x1f4eb70_0, 1; + %mov 9, 0, 2; + %cmpi/u 8, 1, 3; + %jmp/0xz T_0.6, 4; + %load/v 8, v0x1f4ec10_0, 1; + %load/v 9, v0x1f4ed90_0, 7; Select 7 out of 8 bits + %ix/load 0, 8, 0; + %assign/v0 v0x1f4ed90_0, 0, 8; + %load/v 8, v0x1f4ed90_0, 8; + %ix/load 0, 8, 0; + %assign/v0 v0x1f4ea20_0, 0, 8; +T_0.6 ; +T_0.4 ; +T_0.1 ; + %jmp T_0; + .thread T_0; + .scope S_0x1efd730; +T_1 ; + %set/v v0x1f4ee80_0, 0, 1; + %end; + .thread T_1; + .scope S_0x1efd730; +T_2 ; + %delay 10, 0; + %load/v 8, v0x1f4ee80_0, 1; + %inv 8, 1; + %set/v v0x1f4ee80_0, 8, 1; + %jmp T_2; + .thread T_2; + .scope S_0x1efd730; +T_3 ; + %vpi_call 2 33 "$dumpfile", "shiftregister.vcd"; + %vpi_call 2 34 "$dumpvars"; + %vpi_call 2 39 "$display", "PIn? | PDataIn | SDataOut"; + %set/v v0x1f4f080_0, 1, 1; + %movi 8, 31, 8; + %set/v v0x1f4ef20_0, 8, 8; + %delay 40, 0; + %vpi_call 2 41 "$display", "%b | %b | %b ", v0x1f4f080_0, v0x1f4ef20_0, v0x1f4f290_0; + %set/v v0x1f4f080_0, 1, 1; + %movi 8, 62, 8; + %set/v v0x1f4ef20_0, 8, 8; + %delay 40, 0; + %vpi_call 2 43 "$display", "%b | %b | %b", v0x1f4f080_0, v0x1f4ef20_0, v0x1f4f290_0; + %set/v v0x1f4f080_0, 1, 1; + %movi 8, 125, 8; + %set/v v0x1f4ef20_0, 8, 8; + %delay 40, 0; + %vpi_call 2 45 "$display", "%b | %b | %b", v0x1f4f080_0, v0x1f4ef20_0, v0x1f4f290_0; + %set/v v0x1f4f080_0, 1, 1; + %movi 8, 250, 8; + %set/v v0x1f4ef20_0, 8, 8; + %delay 40, 0; + %vpi_call 2 47 "$display", "%b | %b | %b", v0x1f4f080_0, v0x1f4ef20_0, v0x1f4f290_0; + %set/v v0x1f4f080_0, 1, 1; + %movi 8, 244, 8; + %set/v v0x1f4ef20_0, 8, 8; + %delay 40, 0; + %vpi_call 2 49 "$display", "%b | %b | %b", v0x1f4f080_0, v0x1f4ef20_0, v0x1f4f290_0; + %vpi_call 2 54 "$display", "PIn? | SDataIn | PDataOut"; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 1, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 56 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 1, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 58 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 0, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 60 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 0, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 62 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 0, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 64 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %set/v v0x1f4f080_0, 0, 1; + %set/v v0x1f4f210_0, 1, 1; + %set/v v0x1f4f160_0, 1, 1; + %delay 21, 0; + %vpi_call 2 66 "$display", "%b | \011%b | %b ", v0x1f4f080_0, v0x1f4f210_0, v0x1f4efd0_0; + %vpi_call 2 69 "$finish"; + %end; + .thread T_3; +# The file index is used to find the file name in the following table. +:file_names 4; + "N/A"; + ""; + "shiftregister.t.v"; + "./shiftregister.v"; From 21a8d8352bbe3f0616ab922db69954086cc7f919 Mon Sep 17 00:00:00 2001 From: mjakus Date: Wed, 25 Oct 2017 20:44:22 -0400 Subject: [PATCH 22/39] Added wrapper, maybe working --- .../Lab2Vivado.cache/wt/gui_resources.wdf | 45 +- .../wt/java_command_handlers.wdf | 20 +- Lab2Vivado/Lab2Vivado.cache/wt/project.wpc | 3 +- Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf | 10 +- Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml | 70 ++- Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr | 4 +- Lab2Vivado/Lab2Vivado.hw/hw_1/hw.xml | 16 + .../Lab2Vivado.runs/.jobs/vrs_config_19.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_20.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_21.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_22.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_23.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_24.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_25.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_26.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_27.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_28.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_29.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_30.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_31.xml | 5 + .../Lab2Vivado.runs/.jobs/vrs_config_32.xml | 5 + .../impl_1/.init_design.begin.rst | 2 +- .../impl_1/.opt_design.begin.rst | 2 +- .../impl_1/.place_design.begin.rst | 2 +- .../impl_1/.route_design.begin.rst | 2 +- .../Lab2Vivado.runs/impl_1/.vivado.begin.rst | 4 +- .../impl_1/.write_bitstream.begin.rst | 2 +- ...ado.error.rst => .write_bitstream.end.rst} | 0 .../impl_1/.write_bitstream.error.rst | 0 Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml | 133 ++--- Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt | 2 +- .../Lab2Vivado.runs/impl_1/init_design.pb | Bin 7994 -> 1756 bytes .../Lab2Vivado.runs/impl_1/lab2_wrapper.bit | Bin 0 -> 2083848 bytes .../impl_1/{midpoint.tcl => lab2_wrapper.tcl} | 9 +- .../Lab2Vivado.runs/impl_1/lab2_wrapper.vdi | 421 ++++++++++++++++ .../impl_1/lab2_wrapper_7236.backup.vdi | 362 ++++++++++++++ .../impl_1/lab2_wrapper_9254.backup.vdi | 362 ++++++++++++++ ...lab2_wrapper_clock_utilization_routed.rpt} | 22 +- ...t => lab2_wrapper_control_sets_placed.rpt} | 41 +- .../impl_1/lab2_wrapper_drc_opted.rpt | 41 ++ .../impl_1/lab2_wrapper_drc_routed.pb | Bin 0 -> 37 bytes .../impl_1/lab2_wrapper_drc_routed.rpt | 41 ++ .../impl_1/lab2_wrapper_drc_routed.rpx | Bin 0 -> 355 bytes .../impl_1/lab2_wrapper_io_placed.rpt | 442 +++++++++++++++++ ...> lab2_wrapper_methodology_drc_routed.rpt} | 77 +-- .../lab2_wrapper_methodology_drc_routed.rpx | Bin 0 -> 8098 bytes .../impl_1/lab2_wrapper_opt.dcp | Bin 0 -> 218263 bytes .../impl_1/lab2_wrapper_placed.dcp | Bin 0 -> 225041 bytes ...uted.rpt => lab2_wrapper_power_routed.rpt} | 67 +-- .../impl_1/lab2_wrapper_power_routed.rpx | Bin 0 -> 21024 bytes ...b => lab2_wrapper_power_summary_routed.pb} | Bin 722 -> 722 bytes .../impl_1/lab2_wrapper_route_status.pb | Bin 0 -> 43 bytes .../impl_1/lab2_wrapper_route_status.rpt | 11 + .../impl_1/lab2_wrapper_routed.dcp | Bin 0 -> 230402 bytes ...=> lab2_wrapper_timing_summary_routed.rpt} | 20 +- .../lab2_wrapper_timing_summary_routed.rpx | Bin 0 -> 7376 bytes .../impl_1/lab2_wrapper_utilization_placed.pb | Bin 0 -> 224 bytes ...pt => lab2_wrapper_utilization_placed.rpt} | 55 +- .../Lab2Vivado.runs/impl_1/midpoint.vdi | 449 ----------------- .../impl_1/midpoint_drc_opted.rpt | 53 -- .../impl_1/midpoint_drc_routed.pb | Bin 37 -> 0 bytes .../impl_1/midpoint_drc_routed.rpt | 53 -- .../impl_1/midpoint_drc_routed.rpx | Bin 5001 -> 0 bytes .../impl_1/midpoint_io_placed.rpt | 442 ----------------- .../midpoint_methodology_drc_routed.rpx | Bin 7608 -> 0 bytes .../Lab2Vivado.runs/impl_1/midpoint_opt.dcp | Bin 216509 -> 0 bytes .../impl_1/midpoint_placed.dcp | Bin 225191 -> 0 bytes .../impl_1/midpoint_power_routed.rpx | Bin 22448 -> 0 bytes .../impl_1/midpoint_route_status.pb | Bin 43 -> 0 bytes .../impl_1/midpoint_route_status.rpt | 11 - .../impl_1/midpoint_routed.dcp | Bin 230493 -> 0 bytes .../impl_1/midpoint_timing_summary_routed.rpx | Bin 7171 -> 0 bytes .../impl_1/midpoint_utilization_placed.pb | Bin 224 -> 0 bytes .../Lab2Vivado.runs/impl_1/opt_design.pb | Bin 7604 -> 7631 bytes .../Lab2Vivado.runs/impl_1/place_design.pb | Bin 12478 -> 12455 bytes Lab2Vivado/Lab2Vivado.runs/impl_1/project.wdf | 4 +- .../Lab2Vivado.runs/impl_1/route_design.pb | Bin 10356 -> 10395 bytes Lab2Vivado/Lab2Vivado.runs/impl_1/rundef.js | 2 +- Lab2Vivado/Lab2Vivado.runs/impl_1/runme.log | 322 ++++++------ Lab2Vivado/Lab2Vivado.runs/impl_1/runme.sh | 2 +- .../impl_1/usage_statistics_webtalk.html | 468 ++++++++++++++++++ .../impl_1/usage_statistics_webtalk.xml | 416 ++++++++++++++++ Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou | 10 +- Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.pb | Bin 16 -> 149 bytes ...5832.backup.jou => vivado_7236.backup.jou} | 10 +- ...6218.backup.jou => vivado_9254.backup.jou} | 10 +- .../Lab2Vivado.runs/impl_1/write_bitstream.pb | Bin 7340 -> 6415 bytes ...propImpl.xdc => lab2_wrapper_propImpl.xdc} | 16 + .../Lab2Vivado.runs/synth_1/.vivado.begin.rst | 2 +- .../Lab2Vivado.runs/synth_1/gen_run.xml | 31 +- Lab2Vivado/Lab2Vivado.runs/synth_1/htr.txt | 2 +- .../Lab2Vivado.runs/synth_1/lab2_wrapper.dcp | Bin 0 -> 15561 bytes .../{midpoint.tcl => lab2_wrapper.tcl} | 12 +- .../{midpoint.vds => lab2_wrapper.vds} | 229 ++++----- .../synth_1/lab2_wrapper_utilization_synth.pb | Bin 0 -> 224 bytes ...rpt => lab2_wrapper_utilization_synth.rpt} | 33 +- .../Lab2Vivado.runs/synth_1/midpoint.dcp | Bin 15803 -> 0 bytes .../synth_1/midpoint_utilization_synth.pb | Bin 224 -> 0 bytes .../Lab2Vivado.runs/synth_1/project.wdf | 4 +- Lab2Vivado/Lab2Vivado.runs/synth_1/rundef.js | 2 +- Lab2Vivado/Lab2Vivado.runs/synth_1/runme.log | 223 ++++----- Lab2Vivado/Lab2Vivado.runs/synth_1/runme.sh | 2 +- Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.jou | 10 +- Lab2Vivado/Lab2Vivado.runs/synth_1/vivado.pb | Bin 40234 -> 40400 bytes .../constrs_1/imports/Desktop/ZYBO_Master.xdc | 16 +- .../sources_1/imports/Lab2/lab2wrapper.v | 113 +++++ .../sources_1/imports/Lab2/midpoint.v | 120 ++++- Lab2Vivado/Lab2Vivado.xpr | 15 +- lab2wrapper.v | 49 ++ midpoint.v | 7 +- shiftregister.v | 15 +- 111 files changed, 3734 insertions(+), 1777 deletions(-) create mode 100644 Lab2Vivado/Lab2Vivado.hw/hw_1/hw.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_19.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_20.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_21.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_22.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_23.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_24.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_25.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_26.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_27.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_28.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_29.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_30.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_31.xml create mode 100644 Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_32.xml rename Lab2Vivado/Lab2Vivado.runs/impl_1/{.vivado.error.rst => .write_bitstream.end.rst} (100%) delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.bit rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint.tcl => lab2_wrapper.tcl} (87%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_7236.backup.vdi create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_9254.backup.vdi rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_clock_utilization_routed.rpt => lab2_wrapper_clock_utilization_routed.rpt} (93%) rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_control_sets_placed.rpt => lab2_wrapper_control_sets_placed.rpt} (57%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_io_placed.rpt rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_methodology_drc_routed.rpt => lab2_wrapper_methodology_drc_routed.rpt} (52%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_opt.dcp create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_placed.dcp rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_power_routed.rpt => lab2_wrapper_power_routed.rpt} (77%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_power_routed.rpx rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_power_summary_routed.pb => lab2_wrapper_power_summary_routed.pb} (73%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_route_status.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_route_status.rpt create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_routed.dcp rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_timing_summary_routed.rpt => lab2_wrapper_timing_summary_routed.rpt} (92%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_timing_summary_routed.rpx create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_utilization_placed.pb rename Lab2Vivado/Lab2Vivado.runs/impl_1/{midpoint_utilization_placed.rpt => lab2_wrapper_utilization_placed.rpt} (80%) delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.vdi delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_opted.rpt delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.pb delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpt delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_drc_routed.rpx delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_io_placed.rpt delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpx delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_opt.dcp delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_placed.dcp delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_power_routed.rpx delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.pb delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_route_status.rpt delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_routed.dcp delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_timing_summary_routed.rpx delete mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_utilization_placed.pb create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/usage_statistics_webtalk.html create mode 100644 Lab2Vivado/Lab2Vivado.runs/impl_1/usage_statistics_webtalk.xml rename Lab2Vivado/Lab2Vivado.runs/impl_1/{vivado_5832.backup.jou => vivado_7236.backup.jou} (64%) rename Lab2Vivado/Lab2Vivado.runs/impl_1/{vivado_6218.backup.jou => vivado_9254.backup.jou} (64%) rename Lab2Vivado/Lab2Vivado.runs/synth_1/.Xil/{midpoint_propImpl.xdc => lab2_wrapper_propImpl.xdc} (64%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/lab2_wrapper.dcp rename Lab2Vivado/Lab2Vivado.runs/synth_1/{midpoint.tcl => lab2_wrapper.tcl} (76%) rename Lab2Vivado/Lab2Vivado.runs/synth_1/{midpoint.vds => lab2_wrapper.vds} (52%) create mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/lab2_wrapper_utilization_synth.pb rename Lab2Vivado/Lab2Vivado.runs/synth_1/{midpoint_utilization_synth.rpt => lab2_wrapper_utilization_synth.rpt} (86%) delete mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint.dcp delete mode 100644 Lab2Vivado/Lab2Vivado.runs/synth_1/midpoint_utilization_synth.pb create mode 100644 Lab2Vivado/Lab2Vivado.srcs/sources_1/imports/Lab2/lab2wrapper.v create mode 100644 lab2wrapper.v diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf index d9c64b0..d70309b 100644 --- a/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf +++ b/Lab2Vivado/Lab2Vivado.cache/wt/gui_resources.wdf @@ -1,30 +1,49 @@ version:1 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:61646473726377697a6172645f737065636966795f68646c5f6e65746c6973745f626c6f636b5f64657369676e:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:61646473726377697a6172645f737065636966795f6f725f6372656174655f636f6e73747261696e745f66696c6573:32:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f63616e63656c:32:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f6f6b:3434:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f63616e63656c:35:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f6f6b:3832:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:626173656469616c6f675f796573:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:636d646d73676469616c6f675f6f6b:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:636f6e73747261696e747363686f6f73657270616e656c5f6164645f66696c6573:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6578707265706f72747472656570616e656c5f6578705f7265706f72745f747265655f7461626c65:3135:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:65787072756e7472656570616e656c5f6578705f72756e5f747265655f7461626c65:31:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c6573657470616e656c5f66696c655f7365745f70616e656c5f74726565:3234:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c6573657470616e656c5f66696c655f7365745f70616e656c5f74726565:3538:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c6573657470616e656c5f6d65737361676573:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:66696c65736574766965775f657870616e645f616c6c:31:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:666c6f776e6176696761746f727472656570616e656c5f666c6f775f6e6176696761746f725f74726565:3237:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:666c6f776e6176696761746f727472656570616e656c5f666c6f775f6e6176696761746f725f74726565:3437:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:67657474696e6773746172746564766965775f6372656174655f6e65775f70726f6a656374:31:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d73677472656570616e656c5f6d6573736167655f766965775f74726565:33:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6164645f736f7572636573:36:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f72756e5f62697467656e:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:68617264776172657472656570616e656c5f68617264776172655f747265655f7461626c65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d61696e6d656e756d67725f666c6f77:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d61696e6d656e756d67725f6f70656e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d61696e6d656e756d67725f73657474696e6773:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d61696e746f6f6c6261726d67725f72756e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d73677472656570616e656c5f6d6573736167655f766965775f74726565:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:6d7367766965775f7761726e696e675f6d65737361676573:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6164645f736f7572636573:3132:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6175746f5f636f6e6e6563745f746172676574:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6175746f5f7570646174655f68696572:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f676f746f5f70726f6a6563745f6d616e61676572:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f6f70656e5f68617264776172655f6d616e61676572:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f72756e5f62697467656e:35:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f72756e5f73796e746865736973:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f73696d756c6174696f6e5f72756e:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061636f6d6d616e646e616d65735f7372635f656e61626c65:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:706176696577735f7061725f7265706f7274:32:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7061727463686f6f7365725f626f61726473:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6772616d64656275677461625f6f70656e5f746172676574:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6772616d64656275677461625f70726f6772616d5f646576696365:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6772616d667067616469616c6f675f70726f6772616d:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563746e616d6563686f6f7365725f63686f6f73655f70726f6a6563745f6c6f636174696f6e:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563746e616d6563686f6f7365725f70726f6a6563745f6e616d65:32:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563747461625f636c6f73655f64657369676e:31:00:00 70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:70726f6a6563747461625f72656c6f6164:33:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:726469636f6d6d616e64735f64656c657465:35:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:72656d6f7665736f75726365736469616c6f675f616c736f5f64656c657465:32:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73726363686f6f73657270616e656c5f6164645f68646c5f616e645f6e65746c6973745f66696c65735f746f5f796f75725f70726f6a656374:37:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636167657474696e6773746172746564766965775f726563656e745f70726f6a65637473:31:00:00 -70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636173746174656d6f6e69746f725f63616e63656c:31:00:00 -eof:3662300466 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:726469636f6d6d616e64735f64656c657465:3131:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:72656d6f7665736f75726365736469616c6f675f616c736f5f64656c657465:36:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73726363686f6f73657270616e656c5f6164645f68646c5f616e645f6e65746c6973745f66696c65735f746f5f796f75725f70726f6a656374:3134:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:737263636f6e666c6963746469616c6f675f766965775f636f6e666c69637473:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:7372636d656e755f69705f686965726172636879:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636167657474696e6773746172746564766965775f726563656e745f70726f6a65637473:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:73796e7468657469636173746174656d6f6e69746f725f63616e63656c:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f7265736f7572636573:746f706d6f64756c656469616c6f675f73656c6563745f746f705f6d6f64756c655f6f665f796f75725f64657369676e:31:00:00 +eof:1156240332 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf index 494844c..3cc3400 100644 --- a/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf +++ b/Lab2Vivado/Lab2Vivado.cache/wt/java_command_handlers.wdf @@ -1,10 +1,14 @@ version:1 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:616464736f7572636573:36:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6564697464656c657465:35:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:616464736f7572636573:3131:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6175746f636f6e6e656374746172676574:31:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6564697464656c657465:3131:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6c61756e636870726f6772616d66706761:31:00:00 70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6e657770726f6a656374:31:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e62697467656e:37:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e696d706c656d656e746174696f6e:36:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e73796e746865736973:39:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:73686f7776696577:37:00:00 -70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:766965777461736b696d706c656d656e746174696f6e:32:00:00 -eof:4070236527 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6f70656e68617264776172656d616e61676572:31:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e62697467656e:39:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e696d706c656d656e746174696f6e:39:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e73796e746865736973:3231:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:73686f7776696577:3132:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:766965777461736b696d706c656d656e746174696f6e:33:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:766965777461736b70726f6a6563746d616e61676572:32:00:00 +eof:3787048029 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc b/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc index 6888ede..cc82f09 100644 --- a/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc +++ b/Lab2Vivado/Lab2Vivado.cache/wt/project.wpc @@ -1,3 +1,4 @@ version:1 -6d6f64655f636f756e7465727c4755494d6f6465:2 +57656254616c6b5472616e736d697373696f6e417474656d70746564:2 +6d6f64655f636f756e7465727c4755494d6f6465:4 eof: diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf index 5fc9419..c7ad375 100644 --- a/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf +++ b/Lab2Vivado/Lab2Vivado.cache/wt/synthesis.wdf @@ -1,7 +1,7 @@ version:1 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:7863377a303130636c673430302d31:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 -73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:6d6964706f696e74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:6c6162325f77726170706572:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 @@ -33,7 +33,7 @@ version:1 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 -73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a313973:00:00 -73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:313436362e3034374d42:00:00 -73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3338302e3939324d42:00:00 -eof:1751154294 +73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a323173:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:313436372e3338374d42:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3338322e3332384d42:00:00 +eof:2734627688 diff --git a/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml b/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml index 4e9d88e..e4f99e3 100644 --- a/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml +++ b/Lab2Vivado/Lab2Vivado.cache/wt/webtalk_pa.xml @@ -3,10 +3,10 @@ - +

- +
@@ -17,49 +17,67 @@ This means code written to parse this file will need to be revisited each subseq - - + + + + - - - - - + + + + + + + - - + + + - + - + - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + +
diff --git a/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr b/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr index d20a952..e87eed2 100644 --- a/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr +++ b/Lab2Vivado/Lab2Vivado.hw/Lab2Vivado.lpr @@ -3,4 +3,6 @@ - + + + diff --git a/Lab2Vivado/Lab2Vivado.hw/hw_1/hw.xml b/Lab2Vivado/Lab2Vivado.hw/hw_1/hw.xml new file mode 100644 index 0000000..2f8d4f9 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.hw/hw_1/hw.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_19.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_19.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_19.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_20.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_20.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_20.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_21.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_21.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_21.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_22.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_22.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_22.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_23.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_23.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_23.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_24.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_24.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_25.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_25.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_25.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_26.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_26.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_26.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_27.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_27.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_27.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_28.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_28.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_28.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_29.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_29.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_29.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_30.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_30.xml new file mode 100644 index 0000000..bfeee7e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_30.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_31.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_31.xml new file mode 100644 index 0000000..65271ee --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_31.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_32.xml b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_32.xml new file mode 100644 index 0000000..18c7038 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/.jobs/vrs_config_32.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst index 430b473..96571f8 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.init_design.begin.rst @@ -1,5 +1,5 @@ - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst index 430b473..96571f8 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.opt_design.begin.rst @@ -1,5 +1,5 @@ - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst index 430b473..96571f8 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.place_design.begin.rst @@ -1,5 +1,5 @@ - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst index 430b473..96571f8 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.route_design.begin.rst @@ -1,5 +1,5 @@ - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst index 766a83e..73b3d18 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.begin.rst @@ -1,10 +1,10 @@ - + - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst index 9b54380..91f306d 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.begin.rst @@ -1,5 +1,5 @@ - + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.error.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.end.rst similarity index 100% rename from Lab2Vivado/Lab2Vivado.runs/impl_1/.vivado.error.rst rename to Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.end.rst diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst b/Lab2Vivado/Lab2Vivado.runs/impl_1/.write_bitstream.error.rst deleted file mode 100644 index e69de29..0000000 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml b/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml index f411fe5..6b6f036 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/gen_run.xml @@ -1,71 +1,80 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + @@ -73,7 +82,7 @@ diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt b/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt index 0670d3b..5cc1a54 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/htr.txt @@ -6,4 +6,4 @@ # Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. # -vivado -log midpoint.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source midpoint.tcl -notrace +vivado -log lab2_wrapper.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source lab2_wrapper.tcl -notrace diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/init_design.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/init_design.pb index 98858553f17913d94a30f068e54bc8f1d0d5238b..618cf5502e1e3012bfc45bb221f26fbbfcb565e7 100644 GIT binary patch delta 71 zcmdmGcZYYvEymP|x9wR(xfo3*FOU`4Y|NO=wE36xX-38elaI+>U^JNgkz083DmiOb aF)k)^6A+J0f{Vq_*nDy#ljvkgc|`z}9~OfE literal 7994 zcmeI1O>Y`U7{{|~IL=(1FmnwREMJGI&*Y8^$^cy|nA@0(^8 z8~af8(tAErul*GL7VWLi084RTky3Hk!%7Ij?9TJ-^Pk@=&+oXyc7>tx`ZI=*zTJP8g_IUd`5iE8Fy(71`SJ*^W{DVZgkLOI=M>;TM5W!pGd> zJ`ZArk3)$ihkBgx0IHOB3dE{y20ZqJis?;MAaqG#C2H4+uB$XEC3Vqh@aK{R3Ih8q z7GZ#$(2qPGa~F$1U&7=47g%wq!v#el9qs;??n7jlDcNXuKHCU=_H1&A_?#*1NX~SI za}f`8j;eylMQW4UW+cNC?!2cYa}fHxsh5mNXV3&vPvbCZ?uLC9?6M=;oV`uN9DkpDZ0MZ=Q^yP+lBV#Z zP{wK&gxY4yGKekYY_7WVkz^BnR3ah-5Zf3m_?TgL4k|8)q!*Ma-f{EY^ z{{H9kzIvdYOc?RNx5AMKU<6D9FyHKMtq8UfU2eRk3?GzRq)u8_47p#?o#po5Peb2l z@}h?(o*W@_o}7)UVC=l@NuG1bah#Zl+-;ym14FxA5DH448IXS!kgTfb!si&u>tQDv z;%{`(UxVGrA_WUP{@TEM+z;gizQ6YfPK!7@P0s5xuqdZvFW3)*r xZIJe|z_(D5*vk&wMjON??ZtTDM_F}?Qc!t&v_0{oK0xTZz{Nj;fh*mL@h{t8t406- diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.bit b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.bit new file mode 100644 index 0000000000000000000000000000000000000000..a9a5388e50b1c94e8b3017972e2c9fdd69fc8bb4 GIT binary patch literal 2083848 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZ;8+OkgwT5Nz3=--lwM8tu@jP3y4&1$yp|pN zSRI4GJzDSIqo}p^&FsG2P4C-!YbWdu_M!DZU;n*7AKte?&I7}9`_;Lh?uC2dYrxmQ IQTQ78f1pE;_5c6? literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.tcl similarity index 87% rename from Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl rename to Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.tcl index 4a25b7e..2f21535 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint.tcl +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.tcl @@ -47,12 +47,13 @@ start_step write_bitstream set ACTIVE_STEP write_bitstream set rc [catch { create_msg_db write_bitstream.pb - open_checkpoint midpoint_routed.dcp + set_param xicom.use_bs_reader 1 + open_checkpoint lab2_wrapper_routed.dcp set_property webtalk.parent_dir /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.cache/wt [current_project] - catch { write_mem_info -force midpoint.mmi } - write_bitstream -force midpoint.bit + catch { write_mem_info -force lab2_wrapper.mmi } + write_bitstream -force lab2_wrapper.bit catch {write_debug_probes -no_partial_ltxfile -quiet -force debug_nets} - catch {file copy -force debug_nets.ltx midpoint.ltx} + catch {file copy -force debug_nets.ltx lab2_wrapper.ltx} close_msg_db -file write_bitstream.pb } RESULT] if {$rc} { diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi new file mode 100644 index 0000000..68ae8e5 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi @@ -0,0 +1,421 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Wed Oct 25 20:34:16 2017 +# Process ID: 9254 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log lab2_wrapper.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source lab2_wrapper.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source lab2_wrapper.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 4 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:10 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 74 ; free virtual = 1371 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.13 ; elapsed = 00:00:00.27 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 71 ; free virtual = 1369 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 122 ; free virtual = 990 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.37 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 120 ; free virtual = 990 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.38 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 119 ; free virtual = 990 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.41 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.41 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +Ending Logic Optimization Task | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.42 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.11 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 113 ; free virtual = 990 +20 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:08 ; elapsed = 00:00:16 . Memory (MB): peak = 1773.695 ; gain = 466.496 ; free physical = 109 ; free virtual = 990 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 95 ; free virtual = 989 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_opt.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: 17358335b + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 14886c215 + +Time (s): cpu = 00:00:00.32 ; elapsed = 00:00:00.90 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 65 ; free virtual = 980 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 989 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 989 +Phase 1 Placer Initialization | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 989 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 1a6d067a2 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 1a6d067a2 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 20a0c5778 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 18b03c196 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 988 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 18b03c196 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 988 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 +Phase 3 Detail Placement | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: f1f9ea1c + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: f1f9ea1c + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 +Ending Placer Task | Checksum: 8f087fe0 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 984 +29 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 985 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.11 ; elapsed = 00:00:00.36 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 80 ; free virtual = 970 +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.19 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 87 ; free virtual = 978 +report_control_sets: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.15 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 86 ; free virtual = 977 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: 80035223 ConstDB: 0 ShapeSum: f052dbd RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1820.699 ; gain = 39.000 ; free physical = 73 ; free virtual = 903 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1823.699 ; gain = 42.000 ; free physical = 68 ; free virtual = 900 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1823.699 ; gain = 42.000 ; free physical = 68 ; free virtual = 900 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 147624dbf + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a8bbb633 + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 76 ; free virtual = 902 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 1 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 +Phase 4 Rip-up And Reroute | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 +Phase 6 Post Hold Fix | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0318131 % + Global Horizontal Routing Utilization = 0.0105699 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 18.018%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 74 ; free virtual = 901 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: 16e94c267 + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 75 ; free virtual = 902 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 80 ; free virtual = 907 + +Routing Is Done. +35 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:10 ; elapsed = 00:00:18 . Memory (MB): peak = 1865.590 ; gain = 83.891 ; free physical = 74 ; free virtual = 908 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1865.590 ; gain = 0.000 ; free physical = 72 ; free virtual = 907 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_routed.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_routed.rpt -pb lab2_wrapper_drc_routed.pb -rpx lab2_wrapper_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file lab2_wrapper_methodology_drc_routed.rpt -rpx lab2_wrapper_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file lab2_wrapper_power_routed.rpt -pb lab2_wrapper_power_summary_routed.pb -rpx lab2_wrapper_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Wed Oct 25 20:35:33 2017... +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Wed Oct 25 20:35:47 2017 +# Process ID: 9369 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log lab2_wrapper.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source lab2_wrapper.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source lab2_wrapper.tcl -notrace +Command: open_checkpoint lab2_wrapper_routed.dcp + +Starting open_checkpoint Task + +Time (s): cpu = 00:00:00.03 ; elapsed = 00:00:00.05 . Memory (MB): peak = 1083.039 ; gain = 0.000 ; free physical = 475 ; free virtual = 1620 +INFO: [Netlist 29-17] Analyzing 4 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-9369-comparch-VirtualBox/dcp3/lab2_wrapper.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/.Xil/Vivado-9369-comparch-VirtualBox/dcp3/lab2_wrapper.xdc] +Reading XDEF placement. +Reading placer database... +Reading XDEF routing. +Read XDEF File: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.199 ; gain = 0.000 ; free physical = 173 ; free virtual = 1368 +Restored from archive | CPU: 0.010000 secs | Memory: 0.056412 MB | +Finished XDEF File Restore: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1304.199 ; gain = 0.000 ; free physical = 173 ; free virtual = 1368 +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +INFO: [Project 1-604] Checkpoint was created with Vivado v2017.2 (64-bit) build 1909853 +open_checkpoint: Time (s): cpu = 00:00:05 ; elapsed = 00:00:11 . Memory (MB): peak = 1304.199 ; gain = 221.160 ; free physical = 174 ; free virtual = 1367 +Command: write_bitstream -force lab2_wrapper.bit +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command write_bitstream +Command: report_drc (run_mandatory_drcs) for: bitstream_checks +WARNING: [DRC ZPS7-1] PS7 block required: The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado 12-3199] DRC finished with 0 Errors, 1 Warnings +INFO: [Vivado 12-3200] Please refer to the DRC report (report_drc) for more information. +INFO: [Project 1-821] Please set project.enableDesignId to be 'true'. +Loading data files... +Loading site data... +Loading route data... +Processing options... +Creating bitmap... +Creating bitstream... +Writing bitstream ./lab2_wrapper.bit... +INFO: [Vivado 12-1842] Bitgen Completed Successfully. +INFO: [Project 1-120] WebTalk data collection is mandatory when using a WebPACK part without a full Vivado license. To see the specific WebTalk data collected for your design, open the usage_statistics_webtalk.html or usage_statistics_webtalk.xml file in the implementation directory. +INFO: [Common 17-186] '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/usage_statistics_webtalk.xml' has been successfully sent to Xilinx on Wed Oct 25 20:36:37 2017. For additional details about this file, please refer to the WebTalk help file at /opt/Xilinx/Vivado/2017.2/doc/webtalk_introduction.html. +14 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +write_bitstream completed successfully +write_bitstream: Time (s): cpu = 00:00:08 ; elapsed = 00:00:19 . Memory (MB): peak = 1718.020 ; gain = 413.820 ; free physical = 374 ; free virtual = 1351 +INFO: [Common 17-206] Exiting Vivado at Wed Oct 25 20:36:37 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_7236.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_7236.backup.vdi new file mode 100644 index 0000000..851aded --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_7236.backup.vdi @@ -0,0 +1,362 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Wed Oct 25 19:57:10 2017 +# Process ID: 7236 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log lab2_wrapper.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source lab2_wrapper.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source lab2_wrapper.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 4 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:08 . Memory (MB): peak = 1307.203 ; gain = 222.145 ; free physical = 78 ; free virtual = 2286 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.34 . Memory (MB): peak = 1316.207 ; gain = 9.004 ; free physical = 75 ; free virtual = 2284 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.32 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 93 ; free virtual = 1920 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.64 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.68 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.68 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.68 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 +Ending Logic Optimization Task | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.70 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 90 ; free virtual = 1920 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 1172a4803 + +Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:00.21 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 88 ; free virtual = 1919 +20 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:07 ; elapsed = 00:00:15 . Memory (MB): peak = 1766.699 ; gain = 459.496 ; free physical = 87 ; free virtual = 1919 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.06 . Memory (MB): peak = 1766.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 1919 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_opt.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 80 ; free virtual = 1915 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: e6c5a2e5 + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.06 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 80 ; free virtual = 1915 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 80 ; free virtual = 1915 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 149442d85 + +Time (s): cpu = 00:00:00.33 ; elapsed = 00:00:01 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 66 ; free virtual = 1915 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 22e6dd286 + +Time (s): cpu = 00:00:00.33 ; elapsed = 00:00:01 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 63 ; free virtual = 1915 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 22e6dd286 + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 63 ; free virtual = 1915 +Phase 1 Placer Initialization | Checksum: 22e6dd286 + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 63 ; free virtual = 1915 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 1e8a1cd15 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:02 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 78 ; free virtual = 1876 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 1e8a1cd15 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:02 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 78 ; free virtual = 1876 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 1968c6871 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:02 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 77 ; free virtual = 1876 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 2012aee20 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:02 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 77 ; free virtual = 1876 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 2012aee20 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:02 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 77 ; free virtual = 1876 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1875 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1875 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1875 +Phase 3 Detail Placement | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1875 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1875 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1876 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 2476ba32c + +Time (s): cpu = 00:00:00.44 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1876 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: 25b8dfaaa + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1876 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: 25b8dfaaa + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 72 ; free virtual = 1876 +Ending Placer Task | Checksum: 1a9be4742 + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 73 ; free virtual = 1876 +29 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.03 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 73 ; free virtual = 1878 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.12 ; elapsed = 00:00:00.30 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 89 ; free virtual = 1892 +report_utilization: Time (s): cpu = 00:00:00.08 ; elapsed = 00:00:00.23 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 96 ; free virtual = 1900 +report_control_sets: Time (s): cpu = 00:00:00.06 ; elapsed = 00:00:00.13 . Memory (MB): peak = 1774.703 ; gain = 0.000 ; free physical = 96 ; free virtual = 1900 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: f3b4d1b3 ConstDB: 0 ShapeSum: b609758f RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: fe4fea66 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:14 . Memory (MB): peak = 1818.703 ; gain = 44.000 ; free physical = 70 ; free virtual = 1794 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: fe4fea66 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1821.703 ; gain = 47.000 ; free physical = 63 ; free virtual = 1790 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: fe4fea66 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1821.703 ; gain = 47.000 ; free physical = 62 ; free virtual = 1790 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 12a59437b + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1799 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: 1329c4183 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 76 ; free virtual = 1800 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 3 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 +Phase 4 Rip-up And Reroute | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 +Phase 6 Post Hold Fix | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.015625 % + Global Horizontal Routing Utilization = 0.00275735 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 5.40541%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 5.40541%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 2.94118%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 2.94118%, No Congested Regions. +Phase 7 Route finalize | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1827.703 ; gain = 53.000 ; free physical = 75 ; free virtual = 1800 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 4a441b22 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1829.703 ; gain = 55.000 ; free physical = 74 ; free virtual = 1799 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: c5968e34 + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1829.703 ; gain = 55.000 ; free physical = 74 ; free virtual = 1800 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:09 ; elapsed = 00:00:15 . Memory (MB): peak = 1829.703 ; gain = 55.000 ; free physical = 80 ; free virtual = 1805 + +Routing Is Done. +35 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:16 . Memory (MB): peak = 1863.594 ; gain = 88.891 ; free physical = 75 ; free virtual = 1805 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1863.594 ; gain = 0.000 ; free physical = 74 ; free virtual = 1805 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_routed.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_routed.rpt -pb lab2_wrapper_drc_routed.pb -rpx lab2_wrapper_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file lab2_wrapper_methodology_drc_routed.rpt -rpx lab2_wrapper_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file lab2_wrapper_power_routed.rpt -pb lab2_wrapper_power_summary_routed.pb -rpx lab2_wrapper_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Wed Oct 25 19:58:25 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_9254.backup.vdi b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_9254.backup.vdi new file mode 100644 index 0000000..fae9dae --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_9254.backup.vdi @@ -0,0 +1,362 @@ +#----------------------------------------------------------- +# Vivado v2017.2 (64-bit) +# SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017 +# IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017 +# Start of session at: Wed Oct 25 20:34:16 2017 +# Process ID: 9254 +# Current directory: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1 +# Command line: vivado -log lab2_wrapper.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source lab2_wrapper.tcl -notrace +# Log file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper.vdi +# Journal file: /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/vivado.jou +#----------------------------------------------------------- +source lab2_wrapper.tcl -notrace +Design is defaulting to srcset: sources_1 +Design is defaulting to constrset: constrs_1 +INFO: [Netlist 29-17] Analyzing 4 Unisim elements for replacement +INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds +INFO: [Project 1-479] Netlist was created with Vivado 2017.2 +INFO: [Device 21-403] Loading part xc7z010clg400-1 +INFO: [Project 1-570] Preparing netlist for logic optimization +Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +Finished Parsing XDC File [/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.srcs/constrs_1/imports/Desktop/ZYBO_Master.xdc] +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Project 1-111] Unisim Transformation Summary: +No Unisim elements were transformed. + +link_design: Time (s): cpu = 00:00:05 ; elapsed = 00:00:10 . Memory (MB): peak = 1307.199 ; gain = 222.145 ; free physical = 74 ; free virtual = 1371 +Command: opt_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command opt_design + +Starting DRC Task +Command: report_drc (run_mandatory_drcs) for: opt_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Project 1-461] DRC finished with 0 Errors +INFO: [Project 1-462] Please refer to the DRC report (report_drc) for more information. + +Time (s): cpu = 00:00:00.13 ; elapsed = 00:00:00.27 . Memory (MB): peak = 1316.203 ; gain = 9.004 ; free physical = 71 ; free virtual = 1369 +INFO: [Timing 38-35] Done setting XDC timing constraints. + +Starting Logic Optimization Task + +Phase 1 Retarget +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +INFO: [Opt 31-49] Retargeted 0 cell(s). +Phase 1 Retarget | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.33 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 122 ; free virtual = 990 +INFO: [Opt 31-389] Phase Retarget created 0 cells and removed 0 cells + +Phase 2 Constant propagation +INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s). +Phase 2 Constant propagation | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.37 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 120 ; free virtual = 990 +INFO: [Opt 31-389] Phase Constant propagation created 0 cells and removed 0 cells + +Phase 3 Sweep +Phase 3 Sweep | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.38 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 119 ; free virtual = 990 +INFO: [Opt 31-389] Phase Sweep created 0 cells and removed 0 cells + +Phase 4 BUFG optimization +Phase 4 BUFG optimization | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.41 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +INFO: [Opt 31-389] Phase BUFG optimization created 0 cells and removed 0 cells + +Phase 5 Shift Register Optimization +Phase 5 Shift Register Optimization | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.41 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +INFO: [Opt 31-389] Phase Shift Register Optimization created 0 cells and removed 0 cells + +Starting Connectivity Check Task + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 +Ending Logic Optimization Task | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.42 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 118 ; free virtual = 990 + +Starting Power Optimization Task +INFO: [Pwropt 34-132] Skipping clock gating for clocks with a period < 2.00 ns. +Ending Power Optimization Task | Checksum: 17fdb5d3b + +Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.11 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 113 ; free virtual = 990 +20 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered. +opt_design completed successfully +opt_design: Time (s): cpu = 00:00:08 ; elapsed = 00:00:16 . Memory (MB): peak = 1773.695 ; gain = 466.496 ; free physical = 109 ; free virtual = 990 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1773.695 ; gain = 0.000 ; free physical = 95 ; free virtual = 989 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_opt.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_opted.rpt +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt. +report_drc completed successfully +INFO: [Chipscope 16-241] No debug cores found in the current design. +Before running the implement_debug_core command, either use the Set Up Debug wizard (GUI mode) +or use the create_debug_core and connect_debug_core Tcl commands to insert debug cores into the design. +Command: place_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Command: report_drc (run_mandatory_drcs) for: incr_eco_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. +Running DRC as a precondition to command place_design +Command: report_drc (run_mandatory_drcs) for: placer_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + +Starting Placer Task + +Phase 1 Placer Initialization + +Phase 1.1 Placer Initialization Netlist Sorting +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 +Phase 1.1 Placer Initialization Netlist Sorting | Checksum: 17358335b + +Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 +Netlist sorting complete. Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 77 ; free virtual = 981 + +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device +INFO: [Timing 38-35] Done setting XDC timing constraints. +Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device | Checksum: 14886c215 + +Time (s): cpu = 00:00:00.32 ; elapsed = 00:00:00.90 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 65 ; free virtual = 980 + +Phase 1.3 Build Placer Netlist Model +Phase 1.3 Build Placer Netlist Model | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 989 + +Phase 1.4 Constrain Clocks/Macros +Phase 1.4 Constrain Clocks/Macros | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 989 +Phase 1 Placer Initialization | Checksum: 16e1c616f + +Time (s): cpu = 00:00:00.34 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 989 + +Phase 2 Global Placement +WARNING: [Place 46-30] place_design is not in timing mode. Skip physical synthesis in placer +Phase 2 Global Placement | Checksum: 1a6d067a2 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3 Detail Placement + +Phase 3.1 Commit Multi Column Macros +Phase 3.1 Commit Multi Column Macros | Checksum: 1a6d067a2 + +Time (s): cpu = 00:00:00.38 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3.2 Commit Most Macros & LUTRAMs +Phase 3.2 Commit Most Macros & LUTRAMs | Checksum: 20a0c5778 + +Time (s): cpu = 00:00:00.39 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 988 + +Phase 3.3 Area Swap Optimization +Phase 3.3 Area Swap Optimization | Checksum: 18b03c196 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 988 + +Phase 3.4 Pipeline Register Optimization +Phase 3.4 Pipeline Register Optimization | Checksum: 18b03c196 + +Time (s): cpu = 00:00:00.40 ; elapsed = 00:00:01 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 988 + +Phase 3.5 Small Shape Detail Placement +Phase 3.5 Small Shape Detail Placement | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 3.6 Re-assign LUT pins +Phase 3.6 Re-assign LUT pins | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.45 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 3.7 Pipeline Register Optimization +Phase 3.7 Pipeline Register Optimization | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 +Phase 3 Detail Placement | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 4 Post Placement Optimization and Clean-Up + +Phase 4.1 Post Commit Optimization +Phase 4.1 Post Commit Optimization | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 982 + +Phase 4.2 Post Placement Cleanup +Phase 4.2 Post Placement Cleanup | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 + +Phase 4.3 Placer Reporting +Phase 4.3 Placer Reporting | Checksum: 13faffb1a + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 + +Phase 4.4 Final Placement Cleanup +Phase 4.4 Final Placement Cleanup | Checksum: f1f9ea1c + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 +Phase 4 Post Placement Optimization and Clean-Up | Checksum: f1f9ea1c + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 73 ; free virtual = 983 +Ending Placer Task | Checksum: 8f087fe0 + +Time (s): cpu = 00:00:00.46 ; elapsed = 00:00:02 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 74 ; free virtual = 984 +29 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +place_design completed successfully +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 72 ; free virtual = 985 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_placed.dcp' has been generated. +report_io: Time (s): cpu = 00:00:00.11 ; elapsed = 00:00:00.36 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 80 ; free virtual = 970 +report_utilization: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.19 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 87 ; free virtual = 978 +report_control_sets: Time (s): cpu = 00:00:00.07 ; elapsed = 00:00:00.15 . Memory (MB): peak = 1781.699 ; gain = 0.000 ; free physical = 86 ; free virtual = 977 +Command: route_design +Attempting to get a license for feature 'Implementation' and/or device 'xc7z010-clg400' +INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xc7z010-clg400' +Running DRC as a precondition to command route_design +Command: report_drc (run_mandatory_drcs) for: router_checks +report_drc (run_mandatory_drcs) completed successfully +INFO: [Vivado_Tcl 4-198] DRC finished with 0 Errors +INFO: [Vivado_Tcl 4-199] Please refer to the DRC report (report_drc) for more information. + + +Starting Routing Task +Checksum: PlaceDB: 80035223 ConstDB: 0 ShapeSum: f052dbd RouteDB: 0 + +Phase 1 Build RT Design +Phase 1 Build RT Design | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1820.699 ; gain = 39.000 ; free physical = 73 ; free virtual = 903 + +Phase 2 Router Initialization +INFO: [Route 35-64] No timing constraints were detected. The router will operate in resource-optimization mode. + +Phase 2.1 Fix Topology Constraints +Phase 2.1 Fix Topology Constraints | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1823.699 ; gain = 42.000 ; free physical = 68 ; free virtual = 900 + +Phase 2.2 Pre Route Cleanup +Phase 2.2 Pre Route Cleanup | Checksum: fc56ad4b + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1823.699 ; gain = 42.000 ; free physical = 68 ; free virtual = 900 + Number of Nodes with overlaps = 0 +Phase 2 Router Initialization | Checksum: 147624dbf + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 3 Initial Routing +Phase 3 Initial Routing | Checksum: a8bbb633 + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 76 ; free virtual = 902 + +Phase 4 Rip-up And Reroute + +Phase 4.1 Global Iteration 0 + Number of Nodes with overlaps = 1 + Number of Nodes with overlaps = 0 +Phase 4.1 Global Iteration 0 | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 +Phase 4 Rip-up And Reroute | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 5 Delay and Skew Optimization +Phase 5 Delay and Skew Optimization | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 6 Post Hold Fix + +Phase 6.1 Hold Fix Iter +Phase 6.1 Hold Fix Iter | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 +Phase 6 Post Hold Fix | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 7 Route finalize + +Router Utilization Summary + Global Vertical Routing Utilization = 0.0318131 % + Global Horizontal Routing Utilization = 0.0105699 % + Routable Net Status* + *Does not include unroutable nets such as driverless and loadless. + Run report_route_status for detailed report. + Number of Failed Nets = 0 + Number of Unrouted Nets = 0 + Number of Partially Routed Nets = 0 + Number of Node Overlaps = 0 + +Congestion Report +North Dir 1x1 Area, Max Cong = 16.2162%, No Congested Regions. +South Dir 1x1 Area, Max Cong = 18.018%, No Congested Regions. +East Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +West Dir 1x1 Area, Max Cong = 5.88235%, No Congested Regions. +Phase 7 Route finalize | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1829.699 ; gain = 48.000 ; free physical = 75 ; free virtual = 902 + +Phase 8 Verifying routed nets + + Verification completed successfully +Phase 8 Verifying routed nets | Checksum: 1c1648c3c + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 74 ; free virtual = 901 + +Phase 9 Depositing Routes +Phase 9 Depositing Routes | Checksum: 16e94c267 + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 75 ; free virtual = 902 +INFO: [Route 35-16] Router Completed Successfully + +Time (s): cpu = 00:00:10 ; elapsed = 00:00:17 . Memory (MB): peak = 1831.699 ; gain = 50.000 ; free physical = 80 ; free virtual = 907 + +Routing Is Done. +35 Infos, 1 Warnings, 0 Critical Warnings and 0 Errors encountered. +route_design completed successfully +route_design: Time (s): cpu = 00:00:10 ; elapsed = 00:00:18 . Memory (MB): peak = 1865.590 ; gain = 83.891 ; free physical = 74 ; free virtual = 908 +Writing placer database... +Writing XDEF routing. +Writing XDEF routing logical nets. +Writing XDEF routing special nets. +Write XDEF Complete: Time (s): cpu = 00:00:00.02 ; elapsed = 00:00:00.04 . Memory (MB): peak = 1865.590 ; gain = 0.000 ; free physical = 72 ; free virtual = 907 +INFO: [Common 17-1381] The checkpoint '/home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_routed.dcp' has been generated. +Command: report_drc -file lab2_wrapper_drc_routed.rpt -pb lab2_wrapper_drc_routed.pb -rpx lab2_wrapper_drc_routed.rpx +INFO: [Coretcl 2-168] The results of DRC are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpt. +report_drc completed successfully +Command: report_methodology -file lab2_wrapper_methodology_drc_routed.rpt -rpx lab2_wrapper_methodology_drc_routed.rpx +INFO: [Timing 38-35] Done setting XDC timing constraints. +INFO: [Coretcl 2-1520] The results of Report Methodology are in file /home/comparch/Desktop/LoganLab2/Lab2/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt. +report_methodology completed successfully +Command: report_power -file lab2_wrapper_power_routed.rpt -pb lab2_wrapper_power_summary_routed.pb -rpx lab2_wrapper_power_routed.rpx +WARNING: [Power 33-232] No user defined clocks were found in the design! +Resolution: Please specify clocks using create_clock/create_generated_clock for sequential elements. For pure combinatorial circuits, please specify a virtual clock, otherwise the vectorless estimation might be inaccurate +INFO: [Timing 38-35] Done setting XDC timing constraints. +Running Vector-less Activity Propagation... + +Finished Running Vector-less Activity Propagation +40 Infos, 2 Warnings, 0 Critical Warnings and 0 Errors encountered. +report_power completed successfully +INFO: [Timing 38-91] UpdateTimingParams: Speed grade: -1, Delay Type: min_max. +WARNING: [Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis. +INFO: [Common 17-206] Exiting Vivado at Wed Oct 25 20:35:33 2017... diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_clock_utilization_routed.rpt similarity index 93% rename from Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt rename to Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_clock_utilization_routed.rpt index 6a32897..21381ae 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_clock_utilization_routed.rpt +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_clock_utilization_routed.rpt @@ -1,13 +1,13 @@ Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. --------------------------------------------------------------------------------------- +------------------------------------------------------------------------------------------ | Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 -| Date : Tue Oct 24 20:08:10 2017 -| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS -| Command : report_clock_utilization -file midpoint_clock_utilization_routed.rpt -| Design : midpoint +| Date : Wed Oct 25 20:35:32 2017 +| Host : comparch-VirtualBox running 64-bit unknown +| Command : report_clock_utilization -file lab2_wrapper_clock_utilization_routed.rpt +| Design : lab2_wrapper | Device : 7z010-clg400 | Speed File : -1 PRODUCTION 1.11 2014-09-11 --------------------------------------------------------------------------------------- +------------------------------------------------------------------------------------------ Clock Utilization Report @@ -43,7 +43,7 @@ Table of Contents +-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ | Global Id | Source Id | Driver Type/Pin | Constraint | Site | Clock Region | Load Clock Region | Clock Loads | Non-Clock Loads | Clock Period | Clock | Driver Pin | Net | +-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ -| g0 | src0 | BUFG/O | None | BUFGCTRL_X0Y16 | n/a | 1 | 28 | 0 | | | clk_IBUF_BUFG_inst/O | clk_IBUF_BUFG | +| g0 | src0 | BUFG/O | None | BUFGCTRL_X0Y16 | n/a | 1 | 29 | 0 | | | clk_IBUF_BUFG_inst/O | clk_IBUF_BUFG | +-----------+-----------+-----------------+------------+----------------+--------------+-------------------+-------------+-----------------+--------------+-------+----------------------+---------------+ * Clock Loads column represents the clock pin loads (pin count) ** Non-Clock Loads column represents the non-clock pin loads (pin count) @@ -70,7 +70,7 @@ Table of Contents | Clock Region Name | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | +-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ | X0Y0 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1100 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 | -| X1Y0 | 1 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 28 | 1100 | 10 | 350 | 0 | 40 | 0 | 20 | 0 | 20 | +| X1Y0 | 1 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 29 | 1100 | 16 | 350 | 0 | 40 | 0 | 20 | 0 | 20 | | X0Y1 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1100 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 | | X1Y1 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 1100 | 0 | 350 | 0 | 40 | 0 | 20 | 0 | 20 | +-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+ @@ -94,7 +94,7 @@ Table of Contents +-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ | Global Id | Driver Type/Pin | Driver Region (D) | Clock | Period (ns) | Waveform (ns) | Slice Loads | IO Loads | Clocking Loads | GT Loads | Net | +-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ -| g0 | BUFG/O | n/a | | | | 28 | 0 | 0 | 0 | clk_IBUF_BUFG | +| g0 | BUFG/O | n/a | | | | 29 | 0 | 0 | 0 | clk_IBUF_BUFG | +-----------+-----------------+-------------------+-------+-------------+---------------+-------------+----------+----------------+----------+---------------+ * Logic Loads column represents load cell count of all cell types other than IO, GT and clock resources ** IO Loads column represents load cell count of IO types @@ -106,7 +106,7 @@ Table of Contents | | X0 | X1 | +----+----+-----+ | Y1 | 0 | 0 | -| Y0 | 0 | 28 | +| Y0 | 0 | 29 | +----+----+-----+ @@ -116,7 +116,7 @@ Table of Contents +-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ | Global Id | Track | Driver Type/Pin | Constraint | Clock Loads | Non-Clock Loads | FF | LUTRAM | RAMB | DSP | GT | MMCM | PLL | Hard IP | Net | +-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ -| g0 | n/a | BUFG/O | None | 28 | 0 | 28 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | clk_IBUF_BUFG | +| g0 | n/a | BUFG/O | None | 29 | 0 | 29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | clk_IBUF_BUFG | +-----------+-------+-----------------+------------+-------------+-----------------+----+--------+------+-----+----+------+-----+---------+---------------+ * Clock Loads column represents the clock pin loads (pin count) ** Non-Clock Loads column represents the non-clock pin loads (pin count) diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_control_sets_placed.rpt similarity index 57% rename from Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt rename to Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_control_sets_placed.rpt index d93debe..2503e09 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_control_sets_placed.rpt +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_control_sets_placed.rpt @@ -1,12 +1,12 @@ Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. -------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------- | Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 -| Date : Tue Oct 24 20:07:40 2017 +| Date : Wed Oct 25 20:35:10 2017 | Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS -| Command : report_control_sets -verbose -file midpoint_control_sets_placed.rpt -| Design : midpoint +| Command : report_control_sets -verbose -file lab2_wrapper_control_sets_placed.rpt +| Design : lab2_wrapper | Device : xc7z010 -------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------- Control Set Information @@ -22,8 +22,8 @@ Table of Contents +----------------------------------------------------------+-------+ | Status | Count | +----------------------------------------------------------+-------+ -| Number of unique control sets | 3 | -| Unused register locations in slices containing registers | 4 | +| Number of unique control sets | 4 | +| Unused register locations in slices containing registers | 11 | +----------------------------------------------------------+-------+ @@ -33,32 +33,35 @@ Table of Contents +--------------+-----------------------+------------------------+-----------------+--------------+ | Clock Enable | Synchronous Set/Reset | Asynchronous Set/Reset | Total Registers | Total Slices | +--------------+-----------------------+------------------------+-----------------+--------------+ -| No | No | No | 12 | 4 | +| No | No | No | 15 | 5 | | No | No | Yes | 0 | 0 | | No | Yes | No | 0 | 0 | -| Yes | No | No | 16 | 5 | +| Yes | No | No | 9 | 3 | | Yes | No | Yes | 0 | 0 | -| Yes | Yes | No | 0 | 0 | +| Yes | Yes | No | 5 | 2 | +--------------+-----------------------+------------------------+-----------------+--------------+ 3. Detailed Control Set Information ----------------------------------- -+----------------+----------------------------+------------------+------------------+----------------+ -| Clock Signal | Enable Signal | Set/Reset Signal | Slice Load Count | Bel Load Count | -+----------------+----------------------------+------------------+------------------+----------------+ -| clk_IBUF_BUFG | parallelLoadCond/E[0] | | 3 | 8 | -| clk_IBUF_BUFG | shift/shiftregistermem_n_0 | | 2 | 8 | -| clk_IBUF_BUFG | | | 4 | 12 | -+----------------+----------------------------+------------------+------------------+----------------+ ++----------------+----------------------------------------------+------------------------------------+------------------+----------------+ +| Clock Signal | Enable Signal | Set/Reset Signal | Slice Load Count | Bel Load Count | ++----------------+----------------------------------------------+------------------------------------+------------------+----------------+ +| clk_IBUF_BUFG | mid/parallelLoadCond/negativeedge0 | | 1 | 1 | +| clk_IBUF_BUFG | mid/parallelLoadCond/shiftregistermem_reg[6] | mid/parallelLoadCond/negativeedge0 | 2 | 5 | +| clk_IBUF_BUFG | mid/SCLKCond/E[0] | | 2 | 8 | +| clk_IBUF_BUFG | | | 5 | 15 | ++----------------+----------------------------------------------+------------------------------------+------------------+----------------+ +--------+-----------------------+ | Fanout | Number of ControlSets | +--------+-----------------------+ -| 8 | 2 | -| 12 | 1 | +| 1 | 1 | +| 5 | 1 | +| 8 | 1 | +| 15 | 1 | +--------+-----------------------+ diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt new file mode 100644 index 0000000..7e0e7a2 --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_opted.rpt @@ -0,0 +1,41 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Wed Oct 25 20:35:06 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_drc -file lab2_wrapper_drc_opted.rpt +| Design : lab2_wrapper +| Device : xc7z010clg400-1 +| Speed File : -1 +| Design State : Synthesized +------------------------------------------------------------------------------------ + +Report DRC + +Table of Contents +----------------- +1. REPORT SUMMARY +2. REPORT DETAILS + +1. REPORT SUMMARY +----------------- + Netlist: netlist + Floorplan: design_1 + Design limits: + Ruledeck: default + Max violations: + Violations found: 1 ++--------+----------+--------------------+------------+ +| Rule | Severity | Description | Violations | ++--------+----------+--------------------+------------+ +| ZPS7-1 | Warning | PS7 block required | 1 | ++--------+----------+--------------------+------------+ + +2. REPORT DETAILS +----------------- +ZPS7-1#1 Warning +PS7 block required +The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +Related violations: + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.pb b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.pb new file mode 100644 index 0000000000000000000000000000000000000000..70698d16a043af0b5d745495ba43bfe143354a40 GIT binary patch literal 37 scmd;LGcqtV(KDRH% + Ruledeck: default + Max violations: + Violations found: 1 ++--------+----------+--------------------+------------+ +| Rule | Severity | Description | Violations | ++--------+----------+--------------------+------------+ +| ZPS7-1 | Warning | PS7 block required | 1 | ++--------+----------+--------------------+------------+ + +2. REPORT DETAILS +----------------- +ZPS7-1#1 Warning +PS7 block required +The PS7 cell must be used in this Zynq design in order to enable correct default configuration. +Related violations: + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpx b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_drc_routed.rpx new file mode 100644 index 0000000000000000000000000000000000000000..9c15c7c568c8fd713d7aba7e02b41b1f47edd0f1 GIT binary patch literal 355 zcmcJKK}!QM5QP&KYO#o=P>}XA)SKYquArW)UObg53cW1Z&2%>ylkFtIdh_T}{Iecy z7X1s(>@p%9W3U>qq0kML3?)_@qUt}`Dm&|nHR4l+7_vh zR25`{N10N)J^G1r*zlHZ**j++oPToml?-l{*YJ1fyX)b@WU}`p$S70KdaK3#@ ziUOs!)iV%of+Cc8|Cb$SS8QH9GzeX$LapH?I1eR4a410;@Qre?dNUi4=u~Yw&yqv} gZvl-cH9}>Hu<|jn7V)XLo3*L~39qb4@BX`B2VOdJFaQ7m literal 0 HcmV?d00001 diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_io_placed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_io_placed.rpt new file mode 100644 index 0000000..170bd3e --- /dev/null +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_io_placed.rpt @@ -0,0 +1,442 @@ +Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------------------- +| Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 +| Date : Wed Oct 25 20:35:09 2017 +| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS +| Command : report_io -file lab2_wrapper_io_placed.rpt +| Design : lab2_wrapper +| Device : xc7z010 +| Speed File : -1 +| Package : clg400 +| Package Version : FINAL 2012-10-23 +| Package Pin Delay Version : VERS. 2.0 2012-10-23 +------------------------------------------------------------------------------------------------- + +IO Information + +Table of Contents +----------------- +1. Summary +2. IO Assignments by Package Pin + +1. Summary +---------- + ++---------------+ +| Total User IO | ++---------------+ +| 21 | ++---------------+ + + +2. IO Assignments by Package Pin +-------------------------------- + ++------------+-------------+------------+-------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+---------+------------+-----------+----------+------+------------------+ +| Pin Number | Signal Name | Bank Type | Pin Name | Use | IO Standard | IO Bank | Drive (mA) | Slew | On-Chip Termination | Off-Chip Termination | Voltage | Constraint | Pull Type | DQS Bias | Vref | Signal Integrity | ++------------+-------------+------------+-------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+---------+------------+-----------+----------+------+------------------+ +| A1 | | | PS_DDR_DM0_502 | PSS IO | | | | | | | | | | | | | +| A2 | | | PS_DDR_DQ2_502 | PSS IO | | | | | | | | | | | | | +| A3 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| A4 | | | PS_DDR_DQ3_502 | PSS IO | | | | | | | | | | | | | +| A5 | | | PS_MIO6_500 | PSS IO | | | | | | | | | | | | | +| A6 | | | PS_MIO5_500 | PSS IO | | | | | | | | | | | | | +| A7 | | | PS_MIO1_500 | PSS IO | | | | | | | | | | | | | +| A8 | | | GND | GND | | | | | | | 0.0 | | | | | | +| A9 | | | PS_MIO43_501 | PSS IO | | | | | | | | | | | | | +| A10 | | | PS_MIO37_501 | PSS IO | | | | | | | | | | | | | +| A11 | | | PS_MIO36_501 | PSS IO | | | | | | | | | | | | | +| A12 | | | PS_MIO34_501 | PSS IO | | | | | | | | | | | | | +| A13 | | | VCCO_MIO1_501 | VCCO | | | | | | | any** | | | | | | +| A14 | | | PS_MIO32_501 | PSS IO | | | | | | | | | | | | | +| A15 | | | PS_MIO26_501 | PSS IO | | | | | | | | | | | | | +| A16 | | | PS_MIO24_501 | PSS IO | | | | | | | | | | | | | +| A17 | | | PS_MIO20_501 | PSS IO | | | | | | | | | | | | | +| A18 | | | GND | GND | | | | | | | 0.0 | | | | | | +| A19 | | | PS_MIO16_501 | PSS IO | | | | | | | | | | | | | +| A20 | | High Range | IO_L2N_T0_AD8N_35 | User IO | | 35 | | | | | | | | | | | +| B1 | | | GND | GND | | | | | | | 0.0 | | | | | | +| B2 | | | PS_DDR_DQS_N0_502 | PSS IO | | | | | | | | | | | | | +| B3 | | | PS_DDR_DQ1_502 | PSS IO | | | | | | | | | | | | | +| B4 | | | PS_DDR_DRST_B_502 | PSS IO | | | | | | | | | | | | | +| B5 | | | PS_MIO9_500 | PSS IO | | | | | | | | | | | | | +| B6 | | | VCCO_MIO0_500 | VCCO | | | | | | | any** | | | | | | +| B7 | | | PS_MIO4_500 | PSS IO | | | | | | | | | | | | | +| B8 | | | PS_MIO2_500 | PSS IO | | | | | | | | | | | | | +| B9 | | | PS_MIO51_501 | PSS IO | | | | | | | | | | | | | +| B10 | | | PS_SRST_B_501 | PSS IO | | | | | | | | | | | | | +| B11 | | | GND | GND | | | | | | | 0.0 | | | | | | +| B12 | | | PS_MIO48_501 | PSS IO | | | | | | | | | | | | | +| B13 | | | PS_MIO50_501 | PSS IO | | | | | | | | | | | | | +| B14 | | | PS_MIO47_501 | PSS IO | | | | | | | | | | | | | +| B15 | | | PS_MIO45_501 | PSS IO | | | | | | | | | | | | | +| B16 | | | VCCO_MIO1_501 | VCCO | | | | | | | any** | | | | | | +| B17 | | | PS_MIO22_501 | PSS IO | | | | | | | | | | | | | +| B18 | | | PS_MIO18_501 | PSS IO | | | | | | | | | | | | | +| B19 | | High Range | IO_L2P_T0_AD8P_35 | User IO | | 35 | | | | | | | | | | | +| B20 | | High Range | IO_L1N_T0_AD0N_35 | User IO | | 35 | | | | | | | | | | | +| C1 | | | PS_DDR_DQ6_502 | PSS IO | | | | | | | | | | | | | +| C2 | | | PS_DDR_DQS_P0_502 | PSS IO | | | | | | | | | | | | | +| C3 | | | PS_DDR_DQ0_502 | PSS IO | | | | | | | | | | | | | +| C4 | | | GND | GND | | | | | | | 0.0 | | | | | | +| C5 | | | PS_MIO14_500 | PSS IO | | | | | | | | | | | | | +| C6 | | | PS_MIO11_500 | PSS IO | | | | | | | | | | | | | +| C7 | | | PS_POR_B_500 | PSS IO | | | | | | | | | | | | | +| C8 | | | PS_MIO15_500 | PSS IO | | | | | | | | | | | | | +| C9 | | | GND | GND | | | | | | | 0.0 | | | | | | +| C10 | | | PS_MIO52_501 | PSS IO | | | | | | | | | | | | | +| C11 | | | PS_MIO53_501 | PSS IO | | | | | | | | | | | | | +| C12 | | | PS_MIO49_501 | PSS IO | | | | | | | | | | | | | +| C13 | | | PS_MIO29_501 | PSS IO | | | | | | | | | | | | | +| C14 | | | GND | GND | | | | | | | 0.0 | | | | | | +| C15 | | | PS_MIO30_501 | PSS IO | | | | | | | | | | | | | +| C16 | | | PS_MIO28_501 | PSS IO | | | | | | | | | | | | | +| C17 | | | PS_MIO41_501 | PSS IO | | | | | | | | | | | | | +| C18 | | | PS_MIO39_501 | PSS IO | | | | | | | | | | | | | +| C19 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| C20 | | High Range | IO_L1P_T0_AD0P_35 | User IO | | 35 | | | | | | | | | | | +| D1 | | | PS_DDR_DQ5_502 | PSS IO | | | | | | | | | | | | | +| D2 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| D3 | | | PS_DDR_DQ4_502 | PSS IO | | | | | | | | | | | | | +| D4 | | | PS_DDR_A13_502 | PSS IO | | | | | | | | | | | | | +| D5 | | | PS_MIO8_500 | PSS IO | | | | | | | | | | | | | +| D6 | | | PS_MIO3_500 | PSS IO | | | | | | | | | | | | | +| D7 | | | VCCO_MIO0_500 | VCCO | | | | | | | any** | | | | | | +| D8 | | | PS_MIO7_500 | PSS IO | | | | | | | | | | | | | +| D9 | | | PS_MIO12_500 | PSS IO | | | | | | | | | | | | | +| D10 | | | PS_MIO19_501 | PSS IO | | | | | | | | | | | | | +| D11 | | | PS_MIO23_501 | PSS IO | | | | | | | | | | | | | +| D12 | | | VCCO_MIO1_501 | VCCO | | | | | | | any** | | | | | | +| D13 | | | PS_MIO27_501 | PSS IO | | | | | | | | | | | | | +| D14 | | | PS_MIO40_501 | PSS IO | | | | | | | | | | | | | +| D15 | | | PS_MIO33_501 | PSS IO | | | | | | | | | | | | | +| D16 | | | PS_MIO46_501 | PSS IO | | | | | | | | | | | | | +| D17 | | | GND | GND | | | | | | | 0.0 | | | | | | +| D18 | led[3] | High Range | IO_L3N_T0_DQS_AD1N_35 | TRISTATE | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| D19 | | High Range | IO_L4P_T0_35 | User IO | | 35 | | | | | | | | | | | +| D20 | | High Range | IO_L4N_T0_35 | User IO | | 35 | | | | | | | | | | | +| E1 | | | PS_DDR_DQ7_502 | PSS IO | | | | | | | | | | | | | +| E2 | | | PS_DDR_DQ8_502 | PSS IO | | | | | | | | | | | | | +| E3 | | | PS_DDR_DQ9_502 | PSS IO | | | | | | | | | | | | | +| E4 | | | PS_DDR_A12_502 | PSS IO | | | | | | | | | | | | | +| E5 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| E6 | | | PS_MIO0_500 | PSS IO | | | | | | | | | | | | | +| E7 | | | PS_CLK_500 | PSS Clock | | | | | | | | | | | | | +| E8 | | | PS_MIO13_500 | PSS IO | | | | | | | | | | | | | +| E9 | | | PS_MIO10_500 | PSS IO | | | | | | | | | | | | | +| E10 | | | GND | GND | | | | | | | 0.0 | | | | | | +| E11 | | | PS_MIO_VREF_501 | PSS IO | | | | | | | | | | | | | +| E12 | | | PS_MIO42_501 | PSS IO | | | | | | | | | | | | | +| E13 | | | PS_MIO38_501 | PSS IO | | | | | | | | | | | | | +| E14 | | | PS_MIO17_501 | PSS IO | | | | | | | | | | | | | +| E15 | | | VCCO_MIO1_501 | VCCO | | | | | | | any** | | | | | | +| E16 | | | PS_MIO31_501 | PSS IO | | | | | | | | | | | | | +| E17 | | High Range | IO_L3P_T0_DQS_AD1P_35 | User IO | | 35 | | | | | | | | | | | +| E18 | | High Range | IO_L5P_T0_AD9P_35 | User IO | | 35 | | | | | | | | | | | +| E19 | | High Range | IO_L5N_T0_AD9N_35 | User IO | | 35 | | | | | | | | | | | +| E20 | | | GND | GND | | | | | | | 0.0 | | | | | | +| F1 | | | PS_DDR_DM1_502 | PSS IO | | | | | | | | | | | | | +| F2 | | | PS_DDR_DQS_N1_502 | PSS IO | | | | | | | | | | | | | +| F3 | | | GND | GND | | | | | | | 0.0 | | | | | | +| F4 | | | PS_DDR_A14_502 | PSS IO | | | | | | | | | | | | | +| F5 | | | PS_DDR_A10_502 | PSS IO | | | | | | | | | | | | | +| F6 | | Dedicated | TDO_0 | Config | | 0 | | | | | | | | | | | +| F7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| F8 | | | VCCPAUX | PSS VCCAUX | | | | | | | | | | | | | +| F9 | | Dedicated | TCK_0 | Config | | 0 | | | | | | | | | | | +| F10 | | | RSVDGND | GND | | | | | | | | | | | | | +| F11 | | Dedicated | VCCBATT_0 | Config | | 0 | | | | | | | | | | | +| F12 | | | PS_MIO35_501 | PSS IO | | | | | | | | | | | | | +| F13 | | | PS_MIO44_501 | PSS IO | | | | | | | | | | | | | +| F14 | | | PS_MIO21_501 | PSS IO | | | | | | | | | | | | | +| F15 | | | PS_MIO25_501 | PSS IO | | | | | | | | | | | | | +| F16 | | High Range | IO_L6P_T0_35 | User IO | | 35 | | | | | | | | | | | +| F17 | | High Range | IO_L6N_T0_VREF_35 | User IO | | 35 | | | | | | | | | | | +| F18 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| F19 | | High Range | IO_L15P_T2_DQS_AD12P_35 | User IO | | 35 | | | | | | | | | | | +| F20 | | High Range | IO_L15N_T2_DQS_AD12N_35 | User IO | | 35 | | | | | | | | | | | +| G1 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| G2 | | | PS_DDR_DQS_P1_502 | PSS IO | | | | | | | | | | | | | +| G3 | | | PS_DDR_DQ10_502 | PSS IO | | | | | | | | | | | | | +| G4 | | | PS_DDR_A11_502 | PSS IO | | | | | | | | | | | | | +| G5 | | | PS_DDR_VRN_502 | PSS IO | | | | | | | | | | | | | +| G6 | | Dedicated | TDI_0 | Config | | 0 | | | | | | | | | | | +| G7 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| G8 | | | VCCPLL | PSS VCCPLL | | | | | | | | | | | | | +| G9 | | | VCCPAUX | PSS VCCAUX | | | | | | | | | | | | | +| G10 | | | GND | GND | | | | | | | 0.0 | | | | | | +| G11 | | | VCCBRAM | VCCBRAM | | | | | | | | | | | | | +| G12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| G13 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| G14 | led[2] | High Range | IO_0_35 | TRISTATE | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| G15 | sw[0] | High Range | IO_L19N_T3_VREF_35 | INPUT | LVCMOS33 | 35 | | | | NONE | | FIXED | | | | NONE | +| G16 | | | GND | GND | | | | | | | 0.0 | | | | | | +| G17 | | High Range | IO_L16P_T2_35 | User IO | | 35 | | | | | | | | | | | +| G18 | | High Range | IO_L16N_T2_35 | User IO | | 35 | | | | | | | | | | | +| G19 | | High Range | IO_L18P_T2_AD13P_35 | User IO | | 35 | | | | | | | | | | | +| G20 | | High Range | IO_L18N_T2_AD13N_35 | User IO | | 35 | | | | | | | | | | | +| H1 | | | PS_DDR_DQ14_502 | PSS IO | | | | | | | | | | | | | +| H2 | | | PS_DDR_DQ13_502 | PSS IO | | | | | | | | | | | | | +| H3 | | | PS_DDR_DQ11_502 | PSS IO | | | | | | | | | | | | | +| H4 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| H5 | | | PS_DDR_VRP_502 | PSS IO | | | | | | | | | | | | | +| H6 | | | PS_DDR_VREF0_502 | PSS IO | | | | | | | | | | | | | +| H7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| H8 | | | VCCPAUX | PSS VCCAUX | | | | | | | | | | | | | +| H9 | | | GND | GND | | | | | | | 0.0 | | | | | | +| H10 | | | VCCBRAM | VCCBRAM | | | | | | | | | | | | | +| H11 | | | GND | GND | | | | | | | 0.0 | | | | | | +| H12 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| H13 | | | GND | GND | | | | | | | 0.0 | | | | | | +| H14 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| H15 | je[3] | High Range | IO_L19P_T3_35 | OUTPUT | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| H16 | | High Range | IO_L13P_T2_MRCC_35 | User IO | | 35 | | | | | | | | | | | +| H17 | | High Range | IO_L13N_T2_MRCC_35 | User IO | | 35 | | | | | | | | | | | +| H18 | | High Range | IO_L14N_T2_AD4N_SRCC_35 | User IO | | 35 | | | | | | | | | | | +| H19 | | | GND | GND | | | | | | | 0.0 | | | | | | +| H20 | | High Range | IO_L17N_T2_AD5N_35 | User IO | | 35 | | | | | | | | | | | +| J1 | | | PS_DDR_DQ15_502 | PSS IO | | | | | | | | | | | | | +| J2 | | | GND | GND | | | | | | | 0.0 | | | | | | +| J3 | | | PS_DDR_DQ12_502 | PSS IO | | | | | | | | | | | | | +| J4 | | | PS_DDR_A9_502 | PSS IO | | | | | | | | | | | | | +| J5 | | | PS_DDR_BA2_502 | PSS IO | | | | | | | | | | | | | +| J6 | | Dedicated | TMS_0 | Config | | 0 | | | | | | | | | | | +| J7 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| J8 | | | GND | GND | | | | | | | 0.0 | | | | | | +| J9 | | Dedicated | VCCADC_0 | XADC | | 0 | | | | | | | | | | | +| J10 | | Dedicated | GNDADC_0 | XADC | | 0 | | | | | | | | | | | +| J11 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| J12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| J13 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| J14 | | High Range | IO_L20N_T3_AD6N_35 | User IO | | 35 | | | | | | | | | | | +| J15 | je[2] | High Range | IO_25_35 | OUTPUT | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| J16 | | High Range | IO_L24N_T3_AD15N_35 | User IO | | 35 | | | | | | | | | | | +| J17 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| J18 | | High Range | IO_L14P_T2_AD4P_SRCC_35 | User IO | | 35 | | | | | | | | | | | +| J19 | | High Range | IO_L10N_T1_AD11N_35 | User IO | | 35 | | | | | | | | | | | +| J20 | | High Range | IO_L17P_T2_AD5P_35 | User IO | | 35 | | | | | | | | | | | +| K1 | | | PS_DDR_A8_502 | PSS IO | | | | | | | | | | | | | +| K2 | | | PS_DDR_A1_502 | PSS IO | | | | | | | | | | | | | +| K3 | | | PS_DDR_A3_502 | PSS IO | | | | | | | | | | | | | +| K4 | | | PS_DDR_A7_502 | PSS IO | | | | | | | | | | | | | +| K5 | | | GND | GND | | | | | | | 0.0 | | | | | | +| K6 | | Dedicated | VCCO_0 | VCCO | | 0 | | | | | any** | | | | | | +| K7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| K8 | | | VCCPAUX | PSS VCCAUX | | | | | | | | | | | | | +| K9 | | Dedicated | VP_0 | XADC | | 0 | | | | | | | | | | | +| K10 | | Dedicated | VREFN_0 | XADC | | 0 | | | | | | | | | | | +| K11 | | | GND | GND | | | | | | | 0.0 | | | | | | +| K12 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| K13 | | | GND | GND | | | | | | | 0.0 | | | | | | +| K14 | | High Range | IO_L20P_T3_AD6P_35 | User IO | | 35 | | | | | | | | | | | +| K15 | | | GND | GND | | | | | | | 0.0 | | | | | | +| K16 | | High Range | IO_L24P_T3_AD15P_35 | User IO | | 35 | | | | | | | | | | | +| K17 | | High Range | IO_L12P_T1_MRCC_35 | User IO | | 35 | | | | | | | | | | | +| K18 | | High Range | IO_L12N_T1_MRCC_35 | User IO | | 35 | | | | | | | | | | | +| K19 | | High Range | IO_L10P_T1_AD11P_35 | User IO | | 35 | | | | | | | | | | | +| K20 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| L1 | | | PS_DDR_A5_502 | PSS IO | | | | | | | | | | | | | +| L2 | | | PS_DDR_CKP_502 | PSS IO | | | | | | | | | | | | | +| L3 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| L4 | | | PS_DDR_A6_502 | PSS IO | | | | | | | | | | | | | +| L5 | | | PS_DDR_BA0_502 | PSS IO | | | | | | | | | | | | | +| L6 | | Dedicated | PROGRAM_B_0 | Config | | 0 | | | | | | | | | | | +| L7 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| L8 | | | GND | GND | | | | | | | 0.0 | | | | | | +| L9 | | Dedicated | VREFP_0 | XADC | | 0 | | | | | | | | | | | +| L10 | | Dedicated | VN_0 | XADC | | 0 | | | | | | | | | | | +| L11 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| L12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| L13 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| L14 | | High Range | IO_L22P_T3_AD7P_35 | User IO | | 35 | | | | | | | | | | | +| L15 | | High Range | IO_L22N_T3_AD7N_35 | User IO | | 35 | | | | | | | | | | | +| L16 | clk | High Range | IO_L11P_T1_SRCC_35 | INPUT | LVCMOS33 | 35 | | | | NONE | | FIXED | | | | NONE | +| L17 | | High Range | IO_L11N_T1_SRCC_35 | User IO | | 35 | | | | | | | | | | | +| L18 | | | GND | GND | | | | | | | 0.0 | | | | | | +| L19 | | High Range | IO_L9P_T1_DQS_AD3P_35 | User IO | | 35 | | | | | | | | | | | +| L20 | | High Range | IO_L9N_T1_DQS_AD3N_35 | User IO | | 35 | | | | | | | | | | | +| M1 | | | GND | GND | | | | | | | 0.0 | | | | | | +| M2 | | | PS_DDR_CKN_502 | PSS IO | | | | | | | | | | | | | +| M3 | | | PS_DDR_A2_502 | PSS IO | | | | | | | | | | | | | +| M4 | | | PS_DDR_A4_502 | PSS IO | | | | | | | | | | | | | +| M5 | | | PS_DDR_WE_B_502 | PSS IO | | | | | | | | | | | | | +| M6 | | Dedicated | CFGBVS_0 | Config | | 0 | | | | | | | | | | | +| M7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| M8 | | | VCCPAUX | PSS VCCAUX | | | | | | | | | | | | | +| M9 | | Dedicated | DXP_0 | Temp Sensor | | 0 | | | | | | | | | | | +| M10 | | Dedicated | DXN_0 | Temp Sensor | | 0 | | | | | | | | | | | +| M11 | | | GND | GND | | | | | | | 0.0 | | | | | | +| M12 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| M13 | | | GND | GND | | | | | | | 0.0 | | | | | | +| M14 | led[0] | High Range | IO_L23P_T3_35 | OUTPUT | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| M15 | led[1] | High Range | IO_L23N_T3_35 | TRISTATE | LVCMOS33 | 35 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| M16 | | High Range | VCCO_35 | VCCO | | 35 | | | | | 3.30 | | | | | | +| M17 | | High Range | IO_L8P_T1_AD10P_35 | User IO | | 35 | | | | | | | | | | | +| M18 | | High Range | IO_L8N_T1_AD10N_35 | User IO | | 35 | | | | | | | | | | | +| M19 | | High Range | IO_L7P_T1_AD2P_35 | User IO | | 35 | | | | | | | | | | | +| M20 | | High Range | IO_L7N_T1_AD2N_35 | User IO | | 35 | | | | | | | | | | | +| N1 | | | PS_DDR_CS_B_502 | PSS IO | | | | | | | | | | | | | +| N2 | | | PS_DDR_A0_502 | PSS IO | | | | | | | | | | | | | +| N3 | | | PS_DDR_CKE_502 | PSS IO | | | | | | | | | | | | | +| N4 | | | GND | GND | | | | | | | 0.0 | | | | | | +| N5 | | | PS_DDR_ODT_502 | PSS IO | | | | | | | | | | | | | +| N6 | | | RSVDVCC3 | Reserved | | | | | | | | | | | | | +| N7 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| N8 | | | GND | GND | | | | | | | 0.0 | | | | | | +| N9 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| N10 | | | GND | GND | | | | | | | 0.0 | | | | | | +| N11 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| N12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| N13 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| N14 | | | GND | GND | | | | | | | 0.0 | | | | | | +| N15 | | High Range | IO_L21P_T3_DQS_AD14P_35 | User IO | | 35 | | | | | | | | | | | +| N16 | | High Range | IO_L21N_T3_DQS_AD14N_35 | User IO | | 35 | | | | | | | | | | | +| N17 | | High Range | IO_L23P_T3_34 | User IO | | 34 | | | | | | | | | | | +| N18 | | High Range | IO_L13P_T2_MRCC_34 | User IO | | 34 | | | | | | | | | | | +| N19 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | +| N20 | | High Range | IO_L14P_T2_SRCC_34 | User IO | | 34 | | | | | | | | | | | +| P1 | | | PS_DDR_DQ16_502 | PSS IO | | | | | | | | | | | | | +| P2 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| P3 | | | PS_DDR_DQ17_502 | PSS IO | | | | | | | | | | | | | +| P4 | | | PS_DDR_RAS_B_502 | PSS IO | | | | | | | | | | | | | +| P5 | | | PS_DDR_CAS_B_502 | PSS IO | | | | | | | | | | | | | +| P6 | | | PS_DDR_VREF1_502 | PSS IO | | | | | | | | | | | | | +| P7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| P8 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| P9 | | | GND | GND | | | | | | | 0.0 | | | | | | +| P10 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| P11 | | | GND | GND | | | | | | | 0.0 | | | | | | +| P12 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| P13 | | | GND | GND | | | | | | | 0.0 | | | | | | +| P14 | | High Range | IO_L6P_T0_34 | User IO | | 34 | | | | | | | | | | | +| P15 | sw[1] | High Range | IO_L24P_T3_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| P16 | btn[1] | High Range | IO_L24N_T3_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| P17 | | | GND | GND | | | | | | | 0.0 | | | | | | +| P18 | | High Range | IO_L23N_T3_34 | User IO | | 34 | | | | | | | | | | | +| P19 | | High Range | IO_L13N_T2_MRCC_34 | User IO | | 34 | | | | | | | | | | | +| P20 | | High Range | IO_L14N_T2_SRCC_34 | User IO | | 34 | | | | | | | | | | | +| R1 | | | PS_DDR_DQ19_502 | PSS IO | | | | | | | | | | | | | +| R2 | | | PS_DDR_DQS_P2_502 | PSS IO | | | | | | | | | | | | | +| R3 | | | PS_DDR_DQ18_502 | PSS IO | | | | | | | | | | | | | +| R4 | | | PS_DDR_BA1_502 | PSS IO | | | | | | | | | | | | | +| R5 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| R6 | | | RSVDVCC2 | Reserved | | | | | | | | | | | | | +| R7 | | | VCCPINT | PSS VCCINT | | | | | | | | | | | | | +| R8 | | | GND | GND | | | | | | | 0.0 | | | | | | +| R9 | | | VCCAUX | VCCAUX | | | | | | | 1.80 | | | | | | +| R10 | | Dedicated | INIT_B_0 | Config | | 0 | | | | | | | | | | | +| R11 | | Dedicated | DONE_0 | Config | | 0 | | | | | | | | | | | +| R12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| R13 | | | VCCINT | VCCINT | | | | | | | | | | | | | +| R14 | | High Range | IO_L6N_T0_VREF_34 | User IO | | 34 | | | | | | | | | | | +| R15 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | +| R16 | | High Range | IO_L19P_T3_34 | User IO | | 34 | | | | | | | | | | | +| R17 | | High Range | IO_L19N_T3_VREF_34 | User IO | | 34 | | | | | | | | | | | +| R18 | btn[0] | High Range | IO_L20N_T3_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| R19 | | High Range | IO_0_34 | User IO | | 34 | | | | | | | | | | | +| R20 | | | GND | GND | | | | | | | 0.0 | | | | | | +| T1 | | | PS_DDR_DM2_502 | PSS IO | | | | | | | | | | | | | +| T2 | | | PS_DDR_DQS_N2_502 | PSS IO | | | | | | | | | | | | | +| T3 | | | GND | GND | | | | | | | 0.0 | | | | | | +| T4 | | | PS_DDR_DQ20_502 | PSS IO | | | | | | | | | | | | | +| T5 | | | NC | Not Connected | | | | | | | | | | | | | +| T6 | | | RSVDVCC1 | Reserved | | | | | | | | | | | | | +| T7 | | | GND | GND | | | | | | | 0.0 | | | | | | +| T8 | | Dedicated | VCCO_13 | VCCO | | 13 | | | | | any** | | | | | | +| T9 | | | NC | Not Connected | | | | | | | | | | | | | +| T10 | | High Range | IO_L1N_T0_34 | User IO | | 34 | | | | | | | | | | | +| T11 | | High Range | IO_L1P_T0_34 | User IO | | 34 | | | | | | | | | | | +| T12 | | High Range | IO_L2P_T0_34 | User IO | | 34 | | | | | | | | | | | +| T13 | | | GND | GND | | | | | | | 0.0 | | | | | | +| T14 | | High Range | IO_L5P_T0_34 | User IO | | 34 | | | | | | | | | | | +| T15 | | High Range | IO_L5N_T0_34 | User IO | | 34 | | | | | | | | | | | +| T16 | sw[3] | High Range | IO_L9P_T1_DQS_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| T17 | je[6] | High Range | IO_L20P_T3_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| T18 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | +| T19 | | High Range | IO_25_34 | User IO | | 34 | | | | | | | | | | | +| T20 | | High Range | IO_L15P_T2_DQS_34 | User IO | | 34 | | | | | | | | | | | +| U1 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| U2 | | | PS_DDR_DQ22_502 | PSS IO | | | | | | | | | | | | | +| U3 | | | PS_DDR_DQ23_502 | PSS IO | | | | | | | | | | | | | +| U4 | | | PS_DDR_DQ21_502 | PSS IO | | | | | | | | | | | | | +| U5 | | | NC | Not Connected | | | | | | | | | | | | | +| U6 | | | GND | GND | | | | | | | 0.0 | | | | | | +| U7 | | | NC | Not Connected | | | | | | | | | | | | | +| U8 | | | NC | Not Connected | | | | | | | | | | | | | +| U9 | | | NC | Not Connected | | | | | | | | | | | | | +| U10 | | | NC | Not Connected | | | | | | | | | | | | | +| U11 | | Dedicated | VCCO_13 | VCCO | | 13 | | | | | any** | | | | | | +| U12 | | High Range | IO_L2N_T0_34 | User IO | | 34 | | | | | | | | | | | +| U13 | | High Range | IO_L3P_T0_DQS_PUDC_B_34 | User IO | | 34 | | | | | | | | | | | +| U14 | | High Range | IO_L11P_T1_SRCC_34 | User IO | | 34 | | | | | | | | | | | +| U15 | | High Range | IO_L11N_T1_SRCC_34 | User IO | | 34 | | | | | | | | | | | +| U16 | | | GND | GND | | | | | | | 0.0 | | | | | | +| U17 | je[5] | High Range | IO_L9N_T1_DQS_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| U18 | | High Range | IO_L12P_T1_MRCC_34 | User IO | | 34 | | | | | | | | | | | +| U19 | | High Range | IO_L12N_T1_MRCC_34 | User IO | | 34 | | | | | | | | | | | +| U20 | | High Range | IO_L15N_T2_DQS_34 | User IO | | 34 | | | | | | | | | | | +| V1 | | | PS_DDR_DQ24_502 | PSS IO | | | | | | | | | | | | | +| V2 | | | PS_DDR_DQ30_502 | PSS IO | | | | | | | | | | | | | +| V3 | | | PS_DDR_DQ31_502 | PSS IO | | | | | | | | | | | | | +| V4 | | | VCCO_DDR_502 | VCCO | | | | | | | any** | | | | | | +| V5 | | | NC | Not Connected | | | | | | | | | | | | | +| V6 | | | NC | Not Connected | | | | | | | | | | | | | +| V7 | | | NC | Not Connected | | | | | | | | | | | | | +| V8 | | | NC | Not Connected | | | | | | | | | | | | | +| V9 | | | GND | GND | | | | | | | 0.0 | | | | | | +| V10 | | | NC | Not Connected | | | | | | | | | | | | | +| V11 | | | NC | Not Connected | | | | | | | | | | | | | +| V12 | je[0] | High Range | IO_L4P_T0_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| V13 | je[4] | High Range | IO_L3N_T0_DQS_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| V14 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | +| V15 | | High Range | IO_L10P_T1_34 | User IO | | 34 | | | | | | | | | | | +| V16 | btn[2] | High Range | IO_L18P_T2_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| V17 | | High Range | IO_L21P_T3_DQS_34 | User IO | | 34 | | | | | | | | | | | +| V18 | | High Range | IO_L21N_T3_DQS_34 | User IO | | 34 | | | | | | | | | | | +| V19 | | | GND | GND | | | | | | | 0.0 | | | | | | +| V20 | | High Range | IO_L16P_T2_34 | User IO | | 34 | | | | | | | | | | | +| W1 | | | PS_DDR_DQ26_502 | PSS IO | | | | | | | | | | | | | +| W2 | | | GND | GND | | | | | | | 0.0 | | | | | | +| W3 | | | PS_DDR_DQ29_502 | PSS IO | | | | | | | | | | | | | +| W4 | | | PS_DDR_DQS_N3_502 | PSS IO | | | | | | | | | | | | | +| W5 | | | PS_DDR_DQS_P3_502 | PSS IO | | | | | | | | | | | | | +| W6 | | | NC | Not Connected | | | | | | | | | | | | | +| W7 | | Dedicated | VCCO_13 | VCCO | | 13 | | | | | any** | | | | | | +| W8 | | | NC | Not Connected | | | | | | | | | | | | | +| W9 | | | NC | Not Connected | | | | | | | | | | | | | +| W10 | | | NC | Not Connected | | | | | | | | | | | | | +| W11 | | | NC | Not Connected | | | | | | | | | | | | | +| W12 | | | GND | GND | | | | | | | 0.0 | | | | | | +| W13 | sw[2] | High Range | IO_L4N_T0_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| W14 | | High Range | IO_L8P_T1_34 | User IO | | 34 | | | | | | | | | | | +| W15 | | High Range | IO_L10N_T1_34 | User IO | | 34 | | | | | | | | | | | +| W16 | je[1] | High Range | IO_L18N_T2_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| W17 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | +| W18 | | High Range | IO_L22P_T3_34 | User IO | | 34 | | | | | | | | | | | +| W19 | | High Range | IO_L22N_T3_34 | User IO | | 34 | | | | | | | | | | | +| W20 | | High Range | IO_L16N_T2_34 | User IO | | 34 | | | | | | | | | | | +| Y1 | | | PS_DDR_DM3_502 | PSS IO | | | | | | | | | | | | | +| Y2 | | | PS_DDR_DQ28_502 | PSS IO | | | | | | | | | | | | | +| Y3 | | | PS_DDR_DQ25_502 | PSS IO | | | | | | | | | | | | | +| Y4 | | | PS_DDR_DQ27_502 | PSS IO | | | | | | | | | | | | | +| Y5 | | | GND | GND | | | | | | | 0.0 | | | | | | +| Y6 | | | NC | Not Connected | | | | | | | | | | | | | +| Y7 | | | NC | Not Connected | | | | | | | | | | | | | +| Y8 | | | NC | Not Connected | | | | | | | | | | | | | +| Y9 | | | NC | Not Connected | | | | | | | | | | | | | +| Y10 | | Dedicated | VCCO_13 | VCCO | | 13 | | | | | any** | | | | | | +| Y11 | | | NC | Not Connected | | | | | | | | | | | | | +| Y12 | | | NC | Not Connected | | | | | | | | | | | | | +| Y13 | | | NC | Not Connected | | | | | | | | | | | | | +| Y14 | | High Range | IO_L8N_T1_34 | User IO | | 34 | | | | | | | | | | | +| Y15 | | | GND | GND | | | | | | | 0.0 | | | | | | +| Y16 | btn[3] | High Range | IO_L7P_T1_34 | INPUT | LVCMOS33 | 34 | | | | NONE | | FIXED | | | | NONE | +| Y17 | je[7] | High Range | IO_L7N_T1_34 | OUTPUT | LVCMOS33 | 34 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | +| Y18 | | High Range | IO_L17P_T2_34 | User IO | | 34 | | | | | | | | | | | +| Y19 | | High Range | IO_L17N_T2_34 | User IO | | 34 | | | | | | | | | | | +| Y20 | | High Range | VCCO_34 | VCCO | | 34 | | | | | 3.30 | | | | | | ++------------+-------------+------------+-------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+---------+------------+-----------+----------+------+------------------+ +* Default value +** Special VCCO requirements may apply. Please consult the device family datasheet for specific guideline on VCCO requirements. + + diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt similarity index 52% rename from Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt rename to Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt index e3ae410..49cb5c7 100644 --- a/Lab2Vivado/Lab2Vivado.runs/impl_1/midpoint_methodology_drc_routed.rpt +++ b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpt @@ -1,14 +1,14 @@ Copyright 1986-2017 Xilinx, Inc. All Rights Reserved. ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------------- | Tool Version : Vivado v.2017.2 (lin64) Build 1909853 Thu Jun 15 18:39:10 MDT 2017 -| Date : Tue Oct 24 20:08:08 2017 -| Host : comparch-VirtualBox running 64-bit Ubuntu 16.04.3 LTS -| Command : report_methodology -file midpoint_methodology_drc_routed.rpt -rpx midpoint_methodology_drc_routed.rpx -| Design : midpoint +| Date : Wed Oct 25 20:35:31 2017 +| Host : comparch-VirtualBox running 64-bit unknown +| Command : report_methodology -file lab2_wrapper_methodology_drc_routed.rpt -rpx lab2_wrapper_methodology_drc_routed.rpx +| Design : lab2_wrapper | Device : xc7z010clg400-1 | Speed File : -1 | Design State : Routed ------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------------- Report Methodology @@ -23,153 +23,158 @@ Table of Contents Floorplan: design_1 Design limits: Max violations: - Violations found: 28 + Violations found: 29 +-----------+----------+-----------------------------+------------+ | Rule | Severity | Description | Violations | +-----------+----------+-----------------------------+------------+ -| TIMING-17 | Warning | Non-clocked sequential cell | 28 | +| TIMING-17 | Warning | Non-clocked sequential cell | 29 | +-----------+----------+-----------------------------+------------+ 2. REPORT DETAILS ----------------- TIMING-17#1 Warning Non-clocked sequential cell -The clock pin SCLKCond/conditioned_reg/C is not reached by a timing clock +The clock pin mid/SCLKCond/conditioned_reg/C is not reached by a timing clock Related violations: TIMING-17#2 Warning Non-clocked sequential cell -The clock pin SCLKCond/counter_reg[0]/C is not reached by a timing clock +The clock pin mid/SCLKCond/counter_reg[0]/C is not reached by a timing clock Related violations: TIMING-17#3 Warning Non-clocked sequential cell -The clock pin SCLKCond/counter_reg[1]/C is not reached by a timing clock +The clock pin mid/SCLKCond/counter_reg[1]/C is not reached by a timing clock Related violations: TIMING-17#4 Warning Non-clocked sequential cell -The clock pin SCLKCond/positiveedge_reg/C is not reached by a timing clock +The clock pin mid/SCLKCond/positiveedge_reg/C is not reached by a timing clock Related violations: TIMING-17#5 Warning Non-clocked sequential cell -The clock pin SCLKCond/synchronizer0_reg/C is not reached by a timing clock +The clock pin mid/SCLKCond/synchronizer0_reg/C is not reached by a timing clock Related violations: TIMING-17#6 Warning Non-clocked sequential cell -The clock pin SCLKCond/synchronizer1_reg/C is not reached by a timing clock +The clock pin mid/SCLKCond/synchronizer1_reg/C is not reached by a timing clock Related violations: TIMING-17#7 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/conditioned_reg/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/conditioned_reg/C is not reached by a timing clock Related violations: TIMING-17#8 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/counter_reg[0]/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/counter_reg[0]/C is not reached by a timing clock Related violations: TIMING-17#9 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/counter_reg[1]/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/counter_reg[1]/C is not reached by a timing clock Related violations: TIMING-17#10 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/negativeedge_reg/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/negativeedge_reg/C is not reached by a timing clock Related violations: TIMING-17#11 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/synchronizer0_reg/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/synchronizer0_reg/C is not reached by a timing clock Related violations: TIMING-17#12 Warning Non-clocked sequential cell -The clock pin parallelLoadCond/synchronizer1_reg/C is not reached by a timing clock +The clock pin mid/parallelLoadCond/synchronizer1_reg/C is not reached by a timing clock Related violations: TIMING-17#13 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[0]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[0]/C is not reached by a timing clock Related violations: TIMING-17#14 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[1]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[1]/C is not reached by a timing clock Related violations: TIMING-17#15 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[2]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[2]/C is not reached by a timing clock Related violations: TIMING-17#16 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[3]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[3]/C is not reached by a timing clock Related violations: TIMING-17#17 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[4]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[4]/C is not reached by a timing clock Related violations: TIMING-17#18 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[5]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[5]/C is not reached by a timing clock Related violations: TIMING-17#19 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[6]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[6]/C is not reached by a timing clock Related violations: TIMING-17#20 Warning Non-clocked sequential cell -The clock pin shift/parallelDataOut_reg[7]/C is not reached by a timing clock +The clock pin mid/shift/parallelDataOut_reg[7]/C is not reached by a timing clock Related violations: TIMING-17#21 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[0]/C is not reached by a timing clock +The clock pin mid/shift/serialDataOut_reg/C is not reached by a timing clock Related violations: TIMING-17#22 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[1]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[0]/C is not reached by a timing clock Related violations: TIMING-17#23 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[2]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[1]/C is not reached by a timing clock Related violations: TIMING-17#24 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[3]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[2]/C is not reached by a timing clock Related violations: TIMING-17#25 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[4]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[3]/C is not reached by a timing clock Related violations: TIMING-17#26 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[5]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[4]/C is not reached by a timing clock Related violations: TIMING-17#27 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[6]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[5]/C is not reached by a timing clock Related violations: TIMING-17#28 Warning Non-clocked sequential cell -The clock pin shift/shiftregistermem_reg[7]/C is not reached by a timing clock +The clock pin mid/shift/shiftregistermem_reg[6]/C is not reached by a timing clock +Related violations: + +TIMING-17#29 Warning +Non-clocked sequential cell +The clock pin mid/shift/shiftregistermem_reg[7]/C is not reached by a timing clock Related violations: diff --git a/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpx b/Lab2Vivado/Lab2Vivado.runs/impl_1/lab2_wrapper_methodology_drc_routed.rpx new file mode 100644 index 0000000000000000000000000000000000000000..705305150c2ad59737d2f8d127f0565bd1c4e71f GIT binary patch literal 8098 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 z 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ⅅ*56SoA}Y}Z;1ZE@ct`Zc7Y}|Yn+-8 zK>EiVl5pc#Ug$9q&&?Wj?x%ba9lM?4MkGHYUlF^V4Q<7*!c>b} zqBm*{ddF0&UZyvSeo817l>z+Dpmzg)0h}~ia8H#3e+0f)5~B0I{2;JDQZ%jR!-)>H zr4b#^IvDYd<=L017`FIc3h9`;AJ#G%O!i{UrOdMt9Te zAP>hRNILZ`HG_miZw{s~5eIH0y~0+ZU;eIOJz_C9y($5wDI2vAQ=a%R|jJ4#;SEnruREXJ5`0Ptl#!9v;xmY>yLL9e|H{Qi)ni)_;-yjYUz?HpRLzRQ2I zo}Xd_gOQ>Ti%v=)h{ntZ%oP7o9&~qhkEl_oTg{u4xk7B_mv-O3#+v+_UG1b3SW zG?Zmg8TpFflT2p<5RC{$;%Q`W8vm^)DEJVF9XyhT)ADit9a=dl-l43P)+XVe&F*#9{zuJMHpt{kszNt2xuG@uWqup>~<{a^1&K#sK?u8>Z*NVS? zuE>j(B(LUo%H^?XJ2BlqXv?u5yn}4bWRS@G=&dnV`D%jyjt4L&)Z-;htM*dSh&?{){%hApSpzI{GwY#Fi?`&bHflLWb zSA@g!_Ao4iZ`#oVGm?L2P94RC<{B|aE;4a&)5AD!88bX_a9}IrKb=}#a0#w77bFo) z4wF=k-=VNKT6LClM@t=JL!C9GsPTah`0erg)=L0y`j8?xCN2`@Q(?Y(N&sPPKA5+X z-YP93KY92%57GZCGu_X+UQ907Y-fwE-U-_+h?lYF;?xStTIKl(N{-fjb5Ab{xfXw> z$@YRU|CWd9JejO_+kk26y1)LVLV-t^gU!>8v3$rI2v`aHts>aN>KXdXHR{4cek?_8Ao zS~mLblOg*UL)_yH$W&-;&;pKW2+1!L3tGEK1`7lNL5;K~y6=Mje|Yczi|`(bmOcJ| zXaVAIg>tT!m^F5%ySH|XWp|0^kS;ZBkL~S97BPMwE5TLt5x(Wn?wxhtH?3gvJimz^ z*uwr2aDTsBTJXn}UORm3dhg;Fe$qSg%R}Duvz5C0t@Gc^le+vtTPFVMm;wD({!^ve z6t1!aNJlwT9F#r@_p%)SPfC9{yFP(}kh{SxuVdTqqN}$YB((6o#_!nwvCa|Z9`1kJ zHRkaJ?F%WR67dH}erx-%^L_Hz!?!Tx0v!_BnVZ;eq&gJfMc>E4kCz7v?9Ztng2553{N3#fK$drds=#TShs@MH~ z{WX$9y!0_OHOGFNL+JRy1N`b%Q9n!-jIQ{98;8asfja6Fge+m1nqj^R_}8*vr5?c0 zRcjvPp!g2}J%9wz0}R<7v$HQHet3cP{uATdgc&})tIIYUpk!4I05HCoj;ppT<-MPad(oT>ag%it%RMCU>J31v7I}a)Wlm^Tf9C z{0Opzd7r+0c@0;&%i4MCg^qgof1=@cv2TRpfkx52cV>MUsNIv_|1a%6)1X6o?2z$+ z9x+Q`P1wK~VA)=xCxF61>HE^cq7H=sZ@zBu009CCZoyrG26uONcXw-~fg}*z-Q8UpC%C&i z1PBhny}8ZaduGnenSY(Rw{G3KRm;BBO;>f%6kk8}{N80rk`$5Wv)w-A8%~CHql5wV zs2d_1@4r?q3QYk+VMrA2VA$12!(<_*Q9Tl{WPR8FSm=_2`ss9u9_;mJqJP(Vu**Q7 zG48i8#e0r4j-~_0#f`h9kD-r<@X@Otrt(cwAxPPWGE$m$y?+7+_SIIy7MM028N;7~Q^LZ)qh%=+7#1=fdNs1E5jO(+V!p^5!M8n=rgs%^q>fSn3g^>+y8Q`!AF58-^~ z314sF)KDqm629Wn&m)f-qQ8N`g<^&%;s4#lD;TkliWd(ddt@7eyG;cXEOd)X7y|SF zzo_;ZkCj2KkE&o*TGmOnhii0wn8FC)JHbndH)l@1Jfz;PR+-zb)Xca^7k>s*HH7X$ zW`qSvW@yo1^tMQ{v7lhGbK0tV-n@%$%dcZUDBt_t!AfU-zu2XJUii3@J&XP(s{@f9 zwZ*OnMCSwQ?t)j_Ip2mJ76eVa!aW$egV91%7#-P^0FD(~}@Zzn^cl~Ee8 zQtN7PC?!#Ul#mB*@o^wFAM_;Cj1Ba=f5_gTBb{K7P8ZB%EspvUk*9FGEGJ#A0i14p zP>+(LQ#Fe{2NM$@VS;QEk5Z4YT}R1I!usPXF=P1I`wgh$zhp^w#pvI zZ_s7^FN4n8=Q0PcjNh=Afl2!!Mx19+tRrds)CpBPN?nIV(}vZJh=KwJv>oxN)P%)4(xo7_ify&8Z=oeEp7WEo|7?22#?t~yWihZfF`zF2Rm~l<)WgL!muRl-rM{h7c26S}r~(cZ`Kb zeA5nDOR@~_cuUn6PBy;BosnrgmnO)Dr&)xV?8qrM+D^?ZBqkmaI!E~#T~r)}u)$R& z;qIqa9&$Q+i=ld6*nH_!*m7E$ArE8tLOztia@ZYD8h3M(lroG86|ujSYYh$se`U;F zYb$kBUS~VERW{HRx(V*NpGS#f+gQ1tCyQg(S-Hk!iesZ#yQ1fb zW2;%uYO0R?xPmGZ$KJDct*I8rhMh?x#fF=~e~XPhlg5OtV(m(@X1v+$?z&Xy1T!i2 zCSCVUw^XZGhSZ}e9W$AMw>w?+t5AuV$^d|)TnPX5q`4e63-ct_Y-p7EmfU;BHE zf&2OL8vicvrK8bu=X6<(><5O*GZydf1cpZ1mq*y=;{K!X`Ir$&f z8yn}vNC`4ZE-Jfso+VJ+*X!Z_{Lp>6l;SI!S6mM1hZ7~%GgLiyJZWcRw)QsDL3U$3 zB4>0x-03cpXZ&qRP=AsUt~MXDjufs?H07leK$C_SsBS3U99h=b5b=|%@i4g|utKTA z;aSOBDQ!e=L3Kb3M3}Mhh5KKtd)a@fdq#h&dvJfNd-`M2w(nIynsbWICu40=vp*qh z#^JYYZqOP81M+^owB5atH@-#}apw4!?w)R&IZ6}6<>Xx+3-7%$KzVOPp>8(5*+-pV zM~c0xC1MV7Ky!5>Y!>C|YQ$W5kiP1W+RQ?j(5@3|lej!Y=p+K+W`EY!f%8HTCcDrI zIYDL|tm{V}bte%AR@r)dRPAR((oGz8mk=^b*+pzf_&U1Hq;+F8S$yrrvY zpJX6}2f6+Llo#QuK|XB|uJ^?8OotTiu&LgH_xmSpwr^*JNZ0oDll_WvD;~W=2n_cqIEiL|5P z)y07NRi_<(j{x?+G>9w*pTbb@f*SaD<3@<+)q0u_6$`1ki@*$nHaW+q!-DJobp*SC zH2N`H#b=xBz91uLx*p?*tl8oX-uR64G3?>IGv1F`>En3F;;T3Od$OX&5c1HBf4JVY z^()u25$_p$^?+BnXBLklM9D~XLKIvqT52~;P+HJ!YM1N}8y(mKYZDf0b~BMJ6)n^H zWuDef1f5S4;Hw%jbcFXDt=^i`c`?(LiJQ6$nwB5`f6Mn^vj5_H=Kt_L!~eqflK+kG zi9q-s+rv+hSH6b_pZvb?3kt04+arz7ADKty z1B9T&V}p39X9-AF*wxq+)(1Hn?S)c$ZYUW&SJmw^4oN988=iSKl)4zQtPq=KY2|lZ zBhFuhYJ_CsixI_8v+R^)<--4vJ$K0b|BUQG%)Jw03npi3s8|^Y*<+rw^0XIDR%RFE zB#|xoAIW?F@31}YEaU%wvOT!}mF=|@w%h;rC%Zx$!FPk777{4oO(*}zv2vTbnY@ExF?E{?heW2`vENCG)yo(P#upGm zL+Py>GrRL|@>n@?b`sGEMI<5MW5y|*I(}RwC?eFox{&#~<$O?+(<2-lLCE2TqZw}A zC;|wh3NCuv%63HfV9N&d56goc=-HsiWpA?QN=P^Rn)Q8VW(r&NdeKKHB7pY~Z$fi9 zE!Cces`+U2@D(HxEF(g@ZS$4^D)cJme@g>rzZD5lB>a!@e~<=NVk;LdzEGO2cpX31 zh*~0u3I$^15Go2oEiD`*iacmBKU_Wg^m5c~vQeqd=ycRCfAg=ka*Un{3qt5xD&?w# z`!{`W*R?*|Sw&lsi-W=QPr}p(EoW5+89EdcJ*2t#gT;b40UV{`beb3)3x>YxRMPT7 z91RuOjjkkyV**Ms(l6qzpnH2YmL zXHFM;aHtT7~!$*p0d zUb`sW%;fZ}st(j711rXQi9z~ieWEPJ0Sh+!_2+M77Qe+3-a{7-i3)ZlN%Z`e?5}R3 zBJGViX!mF4$nhNb<|a3E8}-DOPh(NLuxHC8x*y@;S)Aw}5=Uv-GDC$n?t*D>G4iD)D z1{Y4BTFK8Z71TJ}m?s9fi;1D9E&r3u@9@x{qNnAcqH7sL_qPm1;YC3gVG*vSE%a`C za6ReJB?eKS8!vrr#j69u-*~=74~LX9fQR?5Wu(aDO0H!b(Q5Q|9rx2cM`*!*zi+Pk z2A>(g6k#Ol62PC|4EZ881|P;$ba=yvlnC`}s*TqyILH*%IuiC+Mf459G_2rJQ7iKs z-FjDsQn!!GTx;L4Qn22+?!5h}E(vR>^Z{zkKXzu-39BXTd$%-|u*28xup(YVrx?iz ztL}Clmg@Fo+(rG-@TAYoq+L@}*S*)#A@F+`U%w(EMP~<3x z$o!^TWcCJC(Cl*wD$Ge%z-!L;3t=ZpW#Zc=ZEh@rcn0+B5K;e|X|9bcYfC0>bU*e< zKUOY+j;zl6#`n%Vyc08xATTT4p03MV-XG8bXG)(K58gRhE*{ovN6X>i8vH>QfEasw zIke&v78p5lA(<2T$}_b&H2mnyOXR{lExZV%-}bg{b2LPHSoI?2C1eR8Vclph>2Hlu z$z-z8M)KbhQMh1YvV(bO(B`NC$8m2v(U|ZVpa8UK7n2-f6E-SD%geuR-V3i#O+IGt zb%*>jrslq`Z({bk*L9y=`1uKmuRYz5%-0eTh}}I*;gdw(h4}qPyw}i9eQL76utZsj zIR{zK__rcFLBc49<_Cp^q@@pE_Up)66Vvb8e2P`gl5pJuOQHt&;cb%f(0s$M#n3uB zraXCtmERL@@VZ@P{ol;ze4<-q?$(+qnJVaJkA@bh~f~ zzWTs>qubr)plI<3_VkI$uzM|w64aA#_(c}!pJ_dtn|PyhjN>Zkz3+gP5R8PQWTHof z&ut3dMAR&EhmrR=c6{v}GLn`f+V?N;!KAL);EGVB&6DBP9(iiP;|f?t!N1eHcnl=) z-NM!-Uuo`!cd6g$(@<=}jADcKy54i29Vz1RYk$kfss1au+lP*oNT^8AoRd3=V}TT* z1h74@AsP@k{(}zHljQEaXKM(jVaQ3v+z1EFs<*k*K>MshGU;jlQ)Td-Cr(NPAv|T8 zv)td2-GB1Cx}TPw{pRCF|F`gNxN#uk|2({F60eB*>g~PKy%m<%_-=NFS(yAUX%&dK z#|oi)a_cJwiz{0Qx+rWunp**vUev4Px>Xtfdv>?VNXWPGdFudjPk!$H9eb^lfXELpE_ z{qU54@nl@cB-detL542!q5a3e9z$NKoGY>-BCVxNUKJ{N#AD>2w$9N%#J^-{1}buX zcx2;FtLrb?k{YTLGVIhk#XGcdHb*(_bn#1*{vU$78=f1kjI&U^d})0GXyBzLT@5(WuoG(A z-y6w$A_uhq>e(@aDe4HM8-mRojdmbk0vJOFHuUUp9B87yy*&us>*{^uNl66t+8G${ zct1f`8>Q2}9n~WJnM@A-PLb4b5;EzL>IiUKU~DMe!aQEj6DhCl{_IP-^%+zb##_%` z4|$_E=Dwq4(CUKhK~i*^w0$(Nd+yE~AopW0X+bk~O1qKk?D`J;;QoWd8jH9qoww-W z%NenQp$%2LV?I8-eW5}$^_Qs?NZOZ{v7r6v=){eya@pLsy@ATqgUdF}N4k;0MRX*> zx8Fx0$Uln0QoV~;ti}k&cJu_GVu1>Y=_+$o+d;6N;_gp(2-eevWO&P+|8!&zcjae0 zGk@&^1mM#D%fv1u#v6!GjJ_uH)p>Q=Vh6vN0Cc5g4#y+?D_Csetj6QP9-k{La5zia z3_ex7lfT>MXZ?8;lqLA>CSRq4glQDxm`ge;9Obq$5s}s%Ab!I9a)evnALzVCx)*2M8noZLr~%->VcIM zGd?%O+Y^D%J@>9q7{Z;3@l*AKbi?pg2l|($om<3?qef@H)q@Xh8J(T&PtW~C7)K0# z`*h;&W^os_e4Ds_Bi=um&p`1DsUN=cxykyv$=V#Q_CL92sy`jwb^xy#s%Fv+_5Wb_ zQXl_*b~5*xK`6LL;HA}kR>gZa&jGc+C)1ZS4b|tmE~q#R=}pIHLQSi)w}Drvff~Vw zw7V`kN!Y$`(YP-z42eJHwY`7Cgz!XgPwid8+M))y{b^I{X9cxdMp(I7ITH5q6#odB zJI(N39jQ}7QE9VMuhfH&n=8jzUV|Tg2Bh`b1`Vw^R*|me5hG#>dn-TLsrO#DXhx+R z@ZpCz%uzk`httB4W^6dh;=y92nq_jzz`^32yhQs_4B{^~t^sx8*rV32Q`+nRC2yAx zwgcbKQ`t6UywQOcDpc5Sh5S5SF1ETW%CvWf7@>BjqRYTY#mWr>J z->gJ7*1*wMkGj9g2%g$EW{6-Un%Otzc=ZVPbA=)pjc50Br6cgdN^xWO4d?cM=|bKc zL|-%nsO;n#0${d&83QhNjinn16jl&Jj$1EVp z{u|MA_{ZUMMo*!_?y_}`8KA@#v33633z=lQXIt6yjcs!3l*-&^>eA1Xb?e8ZGNQzd z)1%NEt22z zSk>0mlG|R2yT;QR-w?%w0r^WT=J2F>rkecs^N_=7i7MNZ;Kl8#Y;AJv%`E^C+@}4;S7UFFGjiO40K)iMN~ENZ$t%ChIwW*$ z_lF+5!&4oV9vx#3Pf18#$IHuZ2w4?Y?J3g=K`}nWD#MemY)|0~!CM@cJ|0V#nyvO$ zH%_&1%&dR}Y0LSICC4daE={k00O)GqocT*KXB{YRhQ~K1VODiQ!WPP*upug*L~BY+ zGPn$iw4%3k6t@kh0OF|S^4bi_z7oAMCzO@H96kvnM;X%yZ3y$>9fw*NEKxTe+2(*@ z6Spb*bS7vi%1>A0+Xd$}?-{Vf*t>t0a1t3fyeJkhqP%oUT})rcn=?QCdyE~OH@Wj{ zY{TRC86=!*1I`@X$h+rB?xcHB%&b^}KKyA7wnr|Owt5|D{~GcB+OY>*a(b@h`ZiaJ z*g3e5AViIbRa-(|ncm{TtHD?I5D^HV?|*EBv%+VP4yQpJ=X`7b z$kcSwx%q^ED1S!Ye>bohZ%4W(U^y#8_qkDyEK@tABB&)r9Fn|!dJkdhi`JeKqInXp zyO*+TfdvVW%&vi0p5_q zO!{(vYWies>I9@fyM{XWkayP4C_+-gzT~&>1be)+Lox){wB=!9APeO+ZF|RwH^w`& z95JFbbr?F9Aojc*eTc33n$d02`YWSrf#=;GW65hucW!kmt8wF9F2rdp$FU-}c2m)> z(1^j)2+;{q5bb6>LpoatCCA&RH|NxiW%daeQMzm?(8SH0L=TZifjfFo_o-W3`s+ep zhItGY1gbz>2Y>b+%Xl-hGDO2T*tLBoxhrQnF^}X-G|;;*o_Id*vhPrm@G5)~HR;Fb zt}Hy4Cz)dY7X9bV*o%1nwtX9?J3En6We69Jcl_0Rt;E@lPi)zKaP?5vGI=P)2CR01 z&&Jj;hZ(!!l zkk^Z<0#*iV#42nISxc0Rfo8Mq+vJ}nrF|KSXBPq?(S=U5 z&u&-b_>f)*?i@eh&oVyFz+i2doD*W*vbU2^EdL6N35=cnfYqZq-z>4j71Adqft9{o9F;i7gsZLI$xo>DH2FtW_Vm|V zt;%TqCUACdZ3zIX#?{}m^Gj&NGFhsNp8~=tk1y94s#M*4@(W?NV_kAtS~iH{7Skyf=&_%ZMd^1SS0NO!wWglPb`| z{{2EwJ+g={{xt17HF=qcQ7B4wbd&c66{lM{QO~_3O)mn4rEWQA~5ed&i3BGo}sLNz+`I-AH{cR6?g$uk6t@Izh zndQt?n!R6iK%yF-#}B@UJ9$4t>2>N$Eggl)1Xc>z)y%~5;IUI!B*tyKFSMbC|Vi#no@QGQX=XC}+u_s>f&^Y-N%-g5(L z;>Ks+iM*G*a|SHj>j>IE8iV?$Mkw6F*7$yeo^|4cbS5d7RBeN{rqtURSeGwAW;ao& zS6ts?7QJ)!2ygUHo248bFaxN9Ar*AD;k*eo!tVMY4}!O?p*l~iZ=Fs4bl%Jb;5+5v zC!DLiA**Saq?#8uK8norS!v0m+E<_07klGP=o@K8-pIRuP}CX85Cxn*6u0-evLV0W zw%>ujb=R5X+`O<2)_+<8OE5u~xY>al+uAd)xQ}KUR9J)kNaA6R?#+zE`881I_ptSF z-JI`P8plzCGn5|+j4+ia+um)@{2qaQw3m}K$Om(EZ0u}oU0mGJ?~xzsOOTb{B$+v_ z=ZGZP160)y2mu=f9=W>W4O%#}=0?m{n~PtUlWr;(eQ;k8XzwFujo~=WJ8$KGTnHV*^1gT|IM#Vzv z<^GrU?*(!r%eVvGnP?gsN3*VSlepPJ=Cu|A60ZNf9+Sxh^&*x zPQuJzBwi;10%^zAsHRteq>y5_cvEZEsaqecx~Znavm{x4NylzJycVs+rLeK;&4kpt z?QJ);*OI#oX&K=KL5kbjk$}gnQ=1*=c|iZNR<5b0!bM07RifYDC33kTRdAd}-^kJ2mL{_8ahQvBP~IIy zqo*gOc!+v(C>^NcVX2{kk>4WH`cIWyVGWI(va-p!Io_2~@ydiw-r+QJb#3>Cos;#y z>wy;rEbe8U$?`m_Hoo68u}p=h3eaSR_8+(`s} zpp0_JWQ^K)ndZc}%mR*Y0QX-m`U#+hmnEBlWh4?hu$wG zsoqqCIc$OlZwm0eTFYbnUcgU!ib$6d$q(Am?YvUD*?Pzm4h{&u^7th~sWdJ2a587b zWq;f~eeN%vZn)@*!JmV?9Vd`V9VW5%SFSJic+u+iTsNT$4&4+>iI58pPuN@=k%8nK zIcanM?ZnOVga(cnYY!kha*1(D|52_pCSjZdv-{H{L-yBL(~RmvtI1SaY=BW z@cnJch}-H}o`st+*Sur=9@awL_3N)medUTu;yO5HC6}S?+1RNu#{2oL`>9tbgbhB`IEaZ^d$#mgyk*SXw z{Cu*qYoab_HAR}vmj;57CK64yhvZMW4&;=V3>-SY6?Uc$yrGynS3OA~Rv73EQgnab z>&#=ir3J3Z?@fyk(DL=>yiQoPVhU7Va2X`(-MBRv<3AD{#mm338dIbrPe^~syC@c! zJSP`d0QCKy@H-`jMdiZ*IEFKWuHRXFaEhN+<;#vu)O*p^78hY)Q21bN<#nMbGeWK_ zGxAMOW@JZSCX7r`=9-O+3KI<`1mPZuCTz~{pv|B_&8S{UQCBxrT$dnQT-PU5?3ki& zM3dYshdy?j#=I`K)_t5bddfggps!YX@e_%vM#>M-AC&3p`jo}$XBznzGMW$N@#JY4f!hb$ZNRo6Yyirz zvkNYwiQUZb5)ncKGsltr-)*wA#>rn|6F>!OvOEXzGq3v}H5mckT?I;s9$l~~q(7ZC+y0FDKF;9! zHK*rEU=RMo%e&AJP6?mR+LW?iFCR zZRcLs0njET@O0_)*whwAChQFhRgX5MFY!oovQ(^-Z6DM^cGy^al*718 zT{lB$S9Axg6HDR5&h1yIFhe7(*^|lYf zZXc%A2+W!H%o;Ma#Wft?3pC&g?&=8{hXmV|j~TBw#)$CD9^WsPXTK9nvV$!RM_ez90%uE4er9`W$1 zBW0l4ow%wMlm4@PaN%)n+#i)RvhCsPYcgH+IW38=Ty|sMk%|$_Zu_ty*!jJ>I~cR$ z;4~ZM5enBhKvGXb1PP{BQ8ekuR72W-I^Y7DV|mar^Qzf`E=vAW^r3r2%*}YMN(T_Ml*dJOM^@-v? zc+=|>LPjQiy!g0#(KZ%psvDg)W@;+wnSpivawX@sJJc}9K|X!IhQcNmY@E;cyl}Fu zk3)v^_R)dQY%GWsg;Qh*8q@n-NzZHmc?*G%%$p^JT#KNaIG^109;!oznK5lV zC(QZjLD<$*@u(DCsk{N%%KUp-Fa9ZYfT6WO2vPE~LM}q#>krVsZVZVNAwQC{U|Ha| z9!Skg!gkB{-WWRb-G#=^pVJiPNEL^7+ zUcM2;UC%So-(vzfaf6G9NXBZRDw?4i^<;dimT(DjyFWBtA=2t)wh}+%`G%ulO+ETM zCB)-f$yvjCw}ut}-8tA@$8qw~S{o3e;AvZEyrKjt8&j&Rq?jNKSuHapl)rF^jp^^g z$!RD}uF)d3=!iYuo>*hZ#bCk(wJ9=-VZALJgzoyN^(mPY8CJzKz%Z2ly=;uy%=M?_ zY9v$ducpC!M8{!`6F=hL)yB_LRH-uL;%;`qI=NsVg$Q2 za`ogy1@oKd1&5EnbP5F2sM$sFo*8Es-!!?o%1pYRpr2Nj=89!Qp~Luw+#L;t4TnsF zLA+ie`Xeg_+iN#f%^IUDz8JB<^`tD1-Mz}E@>;pwJx#x$3zhK#1p!XrT0s`t{emyp zEeUvXQDp~a-!(7+V_sB|yu_;bm{x6_pHP}92oxM26vgvB$JZ8RDc@YF3}^aDFU=@4 z+tW%-4XL`aU}ngQQK|gfa<|3ADxjwRr{*a~Vr#^%y-D-Re=K#VJ&qy2=xorwwVr) z&y%jAj!5zi1c34f3qoeo2-{3U_&}-kyRscjttX0uUra-fV2*r)^Wj)VaIEXOhE!2) zY|mh~0ouVrmPfP8DB1KKofPo5w%&??c7K-4&@U#2is=iP1NH?4pq2hJ=1gB1?~_~m zenwTQ1ki@)xxnix>Gu>1t=z7@w%}!|L2BNtD6sDWRKN3sA=<^1p&!s+M$hgwQGpG_ z)H){7l4yoo-(a0HNEHG0b=20IJYhZ#Pp_YA*rp|KZ&isDfbMjv;;ylP2hY+aE@6EJ z%MR<<47~<5-;{_i^$z`Vl-p(IflmbmV-J9df{@Ou@dCC7x|_X%cjrkrGrIG4Wmf~5 z;DT=gm)F0T#$rw%qy5CzdUg!W=HfOPdS= zL7j!2>m5TTY4-v#9nX^`wq*jMpAvmCC8ncJE=)jAO*(#q8dMJ=q4@&vUP4-E%Fzhy zKtG}#lO=6uPg{yx#xY;%y0KWJ?b@|wTMz0qxq29kBs;;}WCz8O7J`G7C$4&6(9J~6 zvy1i1Y9sJ;S>S9(Vai@?Bx@QcR$WIPI4F_!Afhb>l;k-;vr>H~i6|AwSGtz4SFO-! z?zmSe(*n<0Ckix>?kZH6->Vc>F5Et6WetoNf$z8Pxxj57dR#m=s7%;iq{ZomDz$DZ zYcJ?<^L{6#N{+?AE5wN$up4MWegkZ!C%$n;vYn_Y{RU!K5r%Cmt6imYN$<4irUIrV zuaE<@FAU)r``R(zslPAZ97l3juWkq&LK00Ar~_|TnZl}}6`FS)kQKYD@Q<|h>N(wX zRqU)wou-@ak?T;Uq~~9WohUR{OUQ0GyX}a^7;N?Goeoz=JiGh=mzIGQskt3*WEn+)8&TETEMGP0KKM zMn+YE52S)QgG|Q-y8#n8G|$o6uWud$Z$;A2O6pqUxJstwu57S=jZLo}`-BfttlVI# zl3pXSQ=0F}{-JD8Iwj$d>Dj(W^L|O=J`W6FbXHBJ<#lV|5~(Q!R&Hla<7xlOzh7$V zB>=8-0z)4VfIS(V`Q^lUwXWl#6>P2KfGW+Vh!)h^yKuk?`No#eS^3!Y9`}2_UxX@))ZeV}c%^sd|jcf0&ai4X+ zuz)F(AaDIH=q`DQr`T`dpy&`JAMO;s)6yFdd&ojQ68jQv7adw(q8szODp|$bP}Qq> zxAK8uBbTA`%;fvX95O(XhX{M^eDUx?l|bbFh4Hyl=7mYuL#kthU+qaC|D_Kz;iZp3 zN&kevH06%$LF5VjnFRa;{2nL@TxAj;twgx6X>0pBK~!-AGJF?HD@obHf_C^w~SWeE|q9}2rzia9G*08)6UhfD%WwWMc?pObl5|RLU+{3vKR%1XEZYb|?g0Cspx!2(2H`9|b#DmhEU;CDjCUwCh0@q%$47Q)xRd zV^14(ykyfay-x#0g6A)_tTo4~Y_0E|;k%_d3`_M}R^9DPtCj0XWFXed}FlYaZC|ZfR_SElM^FD`CqhZ6usRZ#xE3(`t zJvLQ}G}+n`X^xNQma!3PwTiu683n;h4Au4u1*&}r4V28{tB`2(95 zR4Zkrv3i<@V0ECvZ-*0uxdd6irFKhjBSnInVgp_D!l^qj`)QhE+~&5{Tk!^ZSYBv} zkGkx+Rz-3C*$nve6xTAc&6vp>%B;b_{mpQu&=N5<HgQ%=Q8(zrej-Z})ZWNu2D!@-%r;M7z}sr8xhiFenBO?ihUbNs z?C)OBb!7)Rnd;oCJ-sC@QPDS-uB}j$mSUhex#&25?Cdj#6@>n53>(khx~I$MJtyXC z28NM>Mh{>WmA?ejchWoLMi zPAf2-DwujOKI5YaD>?JavhP#Li@FVT+A8r7K<*)F^wPPC$_4Z^5v!~-000XhT4zmE z!O8+DbCMsA?+t35`xO`ZmsDN-%6QDKrHj8cU+#J$=_7dZ8D3p<8+( z)s?{Ir!&7$T!&-7zD0S#(eItbrf8Iry#_Wdq+#qK6tEv!5y6jabr(M^Uo_-d>(Id` zXB+5&54UG;sm>v*dEVkJVALWj+VCSWud%~e>kF9B$Xjm*@({<)P0Qd$C)v|N#Lt>y z;7g?AZ=u$Q+rh`@s;IUF1NnilHa>GniRgi_jkBc7bEoEKejew90xzhAg=aAVA`JsZ z@^;|QFo{K-@=fF(jl{*7{6vNgc>H1B2LTIuM_bx&RsbOz$O4t}l>8A|`N=d| ze>}^%^s8JqaD$lG;er8oY|yg#bKmpziEHvj=BYNA5A%uzlh0S3@P$`x4;}3EMHdY; z{Oz5MYJTy9uRvz!5Mf2yXX^6p&xPfnsnLe7=C|kzwaJ#A)LKPW7RKV%?US-}G{a8i zfE72|-E)wi2162;!LD>-<@(I2X0xpCn5R}tx4q0k*b_~T-f&$`?5v3Mf<8zX(ag$Q z+KnzoF_vi!d=;HPn+A|nt{mPzmkIUFHQ~8`Y}EPbhOhv*$!#He%9~Xu!pL)-Ehkhc zTPKY#DCj?(WsYRDTBeZG(V9|BbeEf{v|2uKSfWg{zIfCG&kb?PO$&Ih3CnMkFPWPk z5#=mb)AqqfxGdGH`=nelHzsfM(mbnNw%$G8J#d)&-U6Tt%HnA@3PH~0@e@}Xkz@CO z(fim_bP?G#f5)Ccryk`{w729m4I$@>VPunjQ8P7MZw{-R603^^2540A=2A25wFP+R zOQUPy40f&@lgHXNBIeT{oCmn?v-OM@x%OHUr(D#|Y`$2O{wxhBGfD!Ce*WQ7{44@g zG5-NB9DPqXiJRL=!zv279^8~XlS~2(3o}08i9;=abMN%n8;Dw%3HI6aT$&6Dn&+&q z%wZ^RwA|^ljK16@fu*c> zoUv}IqBNdA^t7god=}dEp!o@1$>Y8DHPa8iB#G-5Co%(hVEntuUU!Yl)?%~cvF;al zMuOJQ1V!%*vfmuE#7!BtWIkP>rRCR3wajyjf`=A3o5nQJz)(ZtqJWt8tY&nl(v7fQbi^fddm!ImF=2%n41mc#&SheIU{>YLCMOlpQ ziPYL>(A>+0Pzoc}EnvPeDXU=&XSmaN{Kkk&#a`^<7%nwO@wPy$Y6-mHm4Dk~Rk|&B<>50L`wn?Qm0BiawyVtC{TJq(XXt z(@dHSJ2~ipjVDW55u4q!#s+B~nv{eUc&ReW3|yk6xaUF@oCl_9UP`IF$o($;9TYZov9Nvp$z*^mZJpuB-G#E3A?XpKK>A1)GDH*MehL9&bya3p3O|< zdmw(8ReAH_?^@$!`=uu;K!eDSq1c)C-Qj$+N(>ob#l0#6CeXGSM}yylMxr=Y_{5-*BXtl&4*(N?s));R#Fz4N=R@N#_1Uh5LopS zVB9v4J1XH)&tO|K@MEA>IXf&Zt8}F(Z#g_{=n$IUScHkZc#}wjz7zSI=#p*POqr}G zUoNcd_ws7lf*7m|Uy|4{gZ1#q>Y|!)k%e!dZM;AN{!xpGmweI0=LPj(pP~jy7dtn- z#!}+o+GiKHSg-UU27bME%@G&twIv3kmj}Rnx~fJ);cbeE$O1=Mnf44O=mA|ly)I8@ zkfS2e_a-)UPOWGUk+IieEvwTYpE^cCt*Eru^5P5fNI4$stawRjl>VGHW+WiNLo2em zVs7{L`ToJFrARF*z8*t@wkP12XJmnHC9|mS>6z&wJnHBvJT_x^5};;5aJZ!Wtff~5 z8f%zi4;^io%hA&k7G%otqt5|D8pCUYhK!6kLG(FoFgq4M-4(F`V-0dua*fT6E$UE^ zH&%W2=7#WR2h1WU_~OPeifDLY50FXu#mb_#r51=haZ2LAx6_WWa%IU=&v$43W&?He z5z5$Pa*?JYgTJyvcQ#2)C!R5)RIG$40x6<#xms5^FATjBEt9gq>d3P-)!OiM_%drG z!9M7hyGXrDKlKLJ_M^T}u#Cx~QVW_eG1hU`^odN%qm+uZKKe8YaSJGK$%BXJT3lCx zV~)Sh3(FxzZo!UYTjZ^L%2Fx&Jmk_d}SHeH`P zn8rtdhE&Sx$c1~&TP&QDo#vNj95ug@J?u$NhoCpxP8H?M?qhKbc(>{7wywUU6lQ*h zIcIg_qqcy=_i8+m(avSytCd?F%bJn(ut;nslW8-U%P(G%65|aK2^0TRoPljxIbX%LDNLXgby3Bf_3Fj;R?ahsXmV4dzVD;BqT_xlYzb7Qnk6x0Y2OhAhmWp}jPm0L zlvArB6U4UY${}MObZ8%!L>Tr3B=}n)=6_D;DnXW4b4*2?`NDb9V?`=YXH@!qMw=6* z--=bf&S^Su#xwoK1{_H7eK^ZLqqnm7rzjFq%x}&)_R97xZG6VWu9IigCH?JLZYJ*n zKSsF(x;Z(fv4S+gRGB-SF%LYEcQlM=ptU5Ux?U|~H+B%*WqM7=@zaxp%#o1%s7}v4X(kR8jCQhGOJLp0wKsY+<-`^29yTZoWFQU$rO|nU1IJ=DVzy5kv&6=NH zXDY1(|IMDOIWhaVK~*=I!XpTjUfPH-HfFZH74c!Bg+^1$;Z$dI%t$Aj4rcsG;w4TX zr`p4#A@{OD`2B2Xr)T`aRZxXXL)MzAEN3w?p9e`r#Mn*dj|jtZ+BM*emCMTFD5@Or zQNYQu;nEV-AE44pl2vr?I&2|drLN(!>wi{#)#2)jfCyaqh5m{&+}T zi$A>a{msEoi-u^rI*&%gXcdv=`x52#3)Oa(+qs#lo79y7;`D-Gqm<`WbtFbB8=^x@ z$0oLtnbfT2Oqs{~%Ut`Imny zj-{=e8iLIA`*s#C!$+c*RU=JrP-G!^XKV3LzUd{}CvdmYU}=kvM|rDoPIV9vJW|JXVTdr+!@rtz*@Psydf}pa z#JD2q8a|8h(8AafEaky-&|!H!o%KTa=)-J>ayuM;v(cEPv0Jn3GMX{2+6-RbTY1Jm zotW|+XxRr;62$VZ{gA~6+HywPF2^u@ZbZ>+Ep4zFo%YGhT5R zZ3}q>bY2+L75rbEy#-Vp&DJiQ5FijpaDuzLOR(S$8Jxl0-3AZN;1Jw{ySoPW;BLV~ za1RjRZ{Bm>`ze3Yi@};JP-XwbxbDOWtn-d zYG0B!_>Yrk#FzP}%}0GZCAEjk%a+n7$(zH+13rhYOq{u02`tSe1bO9H-|IaQ`;ir7 z9HGQ0WHv32t~X;9ocGqWLRSTNG0jkG>&sZiw&n~jPv29w%ow3sPj@7z*%bOTN8q~z z7MCh>V?(Ay%a1iksZX2Uf(>6{XFbGEvexEDSY!D_b-sKJdQd;U>RP&7_w?Prt2};4 zk(Jlc`;L-GXCNN>su7FlX0!n>J)`6P*;7{8;B z3k-qfVhwLK&o^8Hf2{e`qEsFoow|KC5AJNb4M~e0=X&LEfyVuM)pT2^Su>gIUa&D` zfE%W?&7kL@c&uYdm5cXyc0-rw_-aF!BsuuRGb$)!{;89}_>#*zfA{G8x3|DxL$_md zqU8s~5AP%TIii`|hDXGD!9j>#;G%=}EZXB0R&2^2m;GKphVtuq(t$#uS1Kg`WB%+fnPUB0Ig zJ~Ce-c3Y>BU4M?A)NW__Ri`EKDbFCfzRJt{z@0IT(|WbuYlhBq#B@o@-lolrfSHlF z-mBGS+hlogBqugWoSb<|vk!b2qNYVH04@u1$E~kI&fseOioIk)z}Q%qFSka0G_Y~~ z`(f*9Yuu{PDk+fJxVr0tXW3H3vGh-Yd-pB*)D*F&7&%S91l#w;7J~^FFU5@Gz9q8n zrVBQ|A~M#izc^Tw1@Yq6^NcpUEwxVbeJ@lA3fApmm=TeUHZix@5RkNqQ7w?Z7mA*@ zbFBN3O|Q!7-FXnkDd%21Iz%h)btmIgJ!QD_3;wU| z44kt`*}wcPnh6efrgSR~cb0T*4|nEtI|g~0hl8VXORWec)#nAYQS93T4-%Ra-5E0Cu_0?#-MMJ;U z7s2`?iS=(+cop)soVsbIHf`7P9RwY0fVjjO~OW+-O3(m6NhyrFojZk07D2PJB|6_zH)|6m>QV@%syFErNLMuULP zpVY*I4An%)`n#K++~eu|@yZJ48~2VW633U0SN{Z=@`}fyXWiCrE+IGZQPZvYz?dYT ztzdW4Edmg>-LJjuZ~+=Nu29F(Ua~HyUH#OOAODtY8j2j;+9JN9^IfR_kuGDa_S3r@ zIg0xxwmC(Ci=C72{o#`3hsa+N9i^2l+jACN+7WBD&GQX+wLUF@mXwE2TJvV=dhhvF zVGO~Vlm(P(hF~ko0&(@tER%jQ&nwRz72ZRTdT3C4V9DIFEW6{XEcH)q7BFY1D%Zy3 zmLw*7WpuK;cN=#aQDm}wL4O)->@bzGk)>|BAkDi*Y2s}PNFFYOs+C8XY?-$32Ene0+g@^s)#n z6U~ESvTx1n=B^d@hl#T@Ph!zPqN~j%<|T3uKy_mc%<}WWQItDlpPjdm+1*kF)uOR) zf5g;V8`sQ5eV^$;jB*LA?!0p+x9b+H(9RXk>BY?Yq)_`kh~L)AelMjP#MyH zyqC#0n1V2_-J&}_*W~=z46NN_H4AWl0mpAEp)2F1k{p|ao;2_LyN@-CnHPH_r7?sc z;B+*>LfX((|1F-y@5C}+vWJDZOSk=W4E})Lg>Qy(4Xu+oYaSj1gEhKbTl`Lx_{Lv| zoa9=*I^&J9>VfBWViFCCDV;`z0umx;Y1Cd_2BsPv+IeR}AK(o;orm9^4;&AG@eJ>s z!^TxSCV-m9BSq-!_=gHqc!3@fr<-b2)KSbeptrZ1F+RqZ zRmeAwl%HhP@Jr37R$m4}{N#LmXXHSz$lW`qH(aTzAyK)k##(XlJE3@QcRjPPQ^$wb zH(fyw+o-y-bxZginvW)vT88y4Jq!NK!FnU>M^WkM5B3(gvZWf}fhnrQhU!Z)&lBx9 z0sl|a7q9#Z_TItBkJH00)qLH*_4_zoo8i}BVSX3e_|bENYWa`g!(0HV_M05BJQ5kP z|Hi@z#GsbK@kQ8TLnUbLC2%(?rVq> z{BNwArnwK~7@lK{&!?LAt(Xi>0gKkYM9NQDJS@Eg{6l3HrmzH?N45T2aS5D)Dx-ag zrJu4Y(z9vC=1?V8q%c?%Bi6r!S?SZ2_?uh`g49q<327bx6=_~d6h zRWwo$=dr2^l8CHl=Z_N=s|Ov_xDq(hV(>p0o?CZO5Gkz^Y8)Bde`Sc^ZIWXZq)mnT z>r@yhp zK?Dm7%qieZ60JEXd_)rI>>a;~1WN--*dD&B;m@0U&{xZ4Z@8}{eh4Vp-MI0r7 zrJhA(QzjSu$wCF`pW&f{CfXMNR|Rf@*di;*p=KRP;HErpYofi^!(1v{Uu)has226Q z_2Odtm z5XeeCc!8&Pi)psIpOnb07@OnWh(ymA31F%e!6^7AwIP%d`Bi?2aTt%H|lj^ir|@p_qTOh&UFqzitd{tJofzX3m`L zxzIQ*av9r58tGR-pMYY#l^sNo%Kx-sFoBRsyGsUbH4U>T+h<7#Sy3?~gAUB9h>}AG zs$?Rq8DKCZURi*Ce+0)5s!o0cV+zJ#2Q7cq3%rue|3*mWKwZ+SQ;A-wM+bLBZ_(yM z8985>cXpS+q1zdUjUOjD_FEm4m9J!8UNo*mTc`G>;S*AMf(YM?h*f?Vrezza44z$N zT>pJp-kBh9`XXrjte=jTGZEsgPJ8J#VI+*02ZOCNDL|q(EXfpg{YH zA(Ug*zd*ZQjSJA~t7uVPM@u869i(y1_a;vnTz^G>%bP1Rqmi94=RyvBJy;h;Aia_` zo$5j%&InrgRyyP8oU7k<_MX;~FsENHz9>^NvXcgcgv$AtBc`f||MYQVl1v7Zv5*Ih zCm}zkLm@tiKKFP`xyTv!{7i#H6uGeif$->3d59t9XB=neI87Ae|yOP!1TCvgDsE2!!q;M+eX`UlqVV zrACwh_xw!x-dM)RjWN|Vi8q*Q3}M}AN+8Gu{TsU)mjFtYCT3@oSbXihxs_(RvyvS2 zN`1OB%VP9K&<)=Tb*#{4pAszsYb*q+`bI=9kEGXejU1Y!L1{~!01Uou&P^nc+D6uy zW6G}J(K%QZ^_G8CGLD>y6I0?Sn{=i41ZfNJJ_x00(}i{)Gf|vQjy<+c<&-Dqi!s+T&7`Z96$!WBdNY#w0&hbcdtw)Z*->tfNB|@p2 zrn2esiIQlO%;D9rCyGBzX>WMG5=+eFFHB@(6(o4J61Z2mv;KY&mR%nu>h(!-!7MQ# zMx4PS>}NCb>QmH`YC@Bu>Sk;Tm;>S*3u z`ZeZLziBJaP+@>u!=^oLkn(F3f78aO^us0=#x5KaqLue;8NB^%xdd)ajq$Vrh_8y& zRu2AQGuzFzF=LLQU;s38KxOO|Kf9skzub@`IpBsqBDXfoUn z(38Oefbxw7zl~4Sad%4QSc{;F9O&bC5kW!JJblU>2iaB#=#;YDj*&c8`9cl_Xf*Wb zB1bm+lx9Sh$*((?fw>9xO*9(_5)bXpmBS=5$vJJ1lN}}(p(H}1I}7~;l?;^OCsWx( z`-&cokN^=Y>P@?z$*AY>8L_x$ii7--PYa6emF2RLmq2d>T+B6{Lo`sAKYf;dqj0VX zQbsl^N^d#&<(*~nTeMLtf`2H@LXb!zU)jB^TSUNGg9+`{dI17L-q^hq+hF`m(*}nc z)c7Ljbm7Qx>!Vzu(oDVLm}t>il{6kOEBJ2=Y+hsk0*81`1*$Hb0O?bOs=FmX$iJf7 zfmJr&#>uqdDg#Xn;PkuuDJ=}*10!Xpx@i#clk$QQLH7D&z!diBj6W zO=#j&*_`_X{a;FB{Qheue)}CPVg8GD2FEkA;$EjBbY`G2Rh8o1zMd7bGOj*TZ_|`T zv9jRjSJ@KIM@JDKliCXQ3liUq6!nRe$Udd!Tw7pm|4AMPc`TR@6GM;wyiW=EvUdJ< zHp)0igGR{Z4TfOeQm6;X}2dJuRisiAdf8GNyV4` z*4sR|w_SDWIF`bKsz~R>;26bOf3K3cVQS(>z{RG;Vb=)&k4p4-mEY*jSp7JTy(qq{ zQ{mEhQINZZWBG7{Ana6ch_^z~lS1%?*PRFC3(+fC0GCxzY4zhujZ)W6)p8}qOf+9& z_qJAL^AVN!{8%@hhYZq4CPVJ_Hsq8`jdHEOq<2{(p*sxkJ8XT(5B3+azsrO%iTrX- zi?D(kSuNU=8s!1U51!g2ILD)w!Ni(86pyE&vo%oR2;pqwwr;GOl z()x6`9KF(>?(CVZ(22jqc^FoRr+JZ^PYHr3)4zr`Z;5Y2&G!s^?Iv93nG?(ij;1(X z-9PlEa5zz5HjH>yf?|NHT8e&CA+>^YS3_g#dP{x`0X03J_&%r+J?B(S1e1s%r?+{x z3uv|&43t^gITEB=Fuxx$qF2i2*yo0IN8%Cdjhn5#3c^>#v{eB$f$EFCc1JG#9{P4E z8vwXe`#T*`iZeW(hcL1@$XgZY{Ko`<(T0TGg?I&{d{(drsgM!eHS=kW{CS zPy%LAS7A)1FTozgQngC(TT3Kj!8Wsp5N&e=H~N4 zTI`eR8*RG%x6Pia;GrZ{)fS@4kb$g+$E&jsyPqd1^XYHJbmdVBdybog2u;IHeA@r; zuUsc(or6+8?*Gv30Y*)ZAc|T3RBg^X7@ci;iUac($0X}Nim`^Q#(($=Kd_*8QwAjO zs1DT(E!8j?XX~>j)zX%4BrTps18ERiz7!y2;!hLHCFATs7$!CVc)r5cJYn4rP)(u-=`)$ zl)Z-=+yyi`?Trox$sdCQGVzFuzc}y$c9F2Pn zaXoqfV*fWzP(p4F+^UYL>O4Uc$7$b=@hxw}CXb;xs~F;~)M2iQm`4==Q2!kV8p8qs z8thyKgv+ol)|-$*m!AhY*_HEtmCE>j9SWG<88mkvK$k8#t1Ahe#OwLKYbSR3_ymhb z<5?jW*6pw}E`49I7~YlZJD9_Ti_&WlfV(y)-e8BQRRx;+m7?chF_40V)pD@tC&LoV z`()}2DZ$m~8y}E{Jmv zb+N8VY&PL4HR}J9g3E1Ux{{LO;Av_OZ^~pgM>`!TED77uHrAeCWY12#l_I?B6=4P+ zbj6y9i!(j|F`Zb8#mOT1?H1**u3gjMqi^%@ZRyUh{_2(0!RtHc2+<&%elVPd)_Uz) zsTt)jO{j-jPG&+8AhHs{8G0f0c#t3;gtL^XcWYEn?jW)$DE%g9VdC0*J>}d1}AzB-O9k;h-stYq0oaBJ?}GC7IBcuqG4d8jdGQp*iXp;+1p&#Qp;cR@g&zk3=i4{nV+W8Ybak*mF>8%TSRDQOB}T-xi?C zm!f85pThB{fg9oSap0hay%b?K5;+SU6k*HqI#sJPLCf;ueg^ei8?M1z!qbd$6V4Wsi=!@T~pfi(HxDv6YvytQ)uI)vCUeQ)d0<&a7tBrQFk_mC*$A&K+}lwt1H zJT#OMN0s$f+QK#IV#}4+TPhCN@82vCwP&}rP%!=wEA0X-Lh{jGBfs@(&SFkFph3|V zvnKUl&uaxwQ^dS=KJkWeX^NfuCg7CYD(%}< z?mdieJ)S*4d={k2(c69anUY!DBx6o}yvLsoGpTU{swrZZ*KCRB2W*}W_=(?F2Ho7B zjaQ!33rEJ2!izci#7w?wTKK zyjYnNBD?~PtSN;sjiN8F?C%8|$U~O*&yRc{`u2tJ*SVHj@`Uo|GlzsFT#ygHf5!-K z-j*2MYHzXKb=db7?i1n?Xnv@1G(HN&ZHU^^zV;Uf-KQIC?_XKOy z>X1wNOUV82yStt|nWBrL8}n21{mJ3%>N1Zi{$-nVi4z4EsN&Y|o$KK`542bVT^UU!3Jo=ETp(i?iRX+>f}R7-43d+S)O2u|^7-@iZu9)ChoD`Q>+nfR zc-q#6r#ZIa>$*2v&MF7uM7h*7^->m5e^7AoR|Y`0@nuZnxIgCWa_b76vz?{)!=^a% z@nst0&p&?=Of?{~Cq!wAdYx{K!D8M2s|J7LGj1CaOMu%;(^IA&aGxGYKR)V`_&x_; z?!vS;f3#zoNJF~Z^^dkLc^uRitSP=D54asH_!VubeI*Hh5i37Sj5|7Dr|N6W!ff&^ z%W6J{D-CD9=xK|u5&g!(oPYS9WmJ~7^))gOtP4}zoo`lRv7ZtlPQxgmEH68*GCjpU z8_&(e-?>7oI&RG3CNq#RiIZV^05_s==RwF-Q+X>giP;%Z=0VQdmbGHN4e#T>viCjYS?1qR-t8pH(=wL z;+x{F`ACL_+`FUs3l=rWtk~qEb|xRde*nCcRgWs)?R$1aKO4@jRadrO*D|=E-)e1(qW&qpGcCx(W>aT06U< zaFSi^(Bc5rXD2ku=_nS?Uu?Mkc4%7FQ#?s(KlBL#?+;db)Y^qOb$YgcAK8NH>e)q~ zortyhYMa<-Gz2;N#>9DPo1}RC8TsWCeZSf{ocrnGFeOn~On!tUr@#aiG`*R2uz&ZE zlxakVk1#*2Qrw|OWE7OTcb@yH-J`ds!XH>1-DczQdeAx;wichZ!tP8TC5==bdNiGe z3~Wl}yP*;_B6$>C_})HLw1SS?@v5ugcI=AUu0qJ&>0v1CKygjm_k8#63-^3hTl3@g zznSKm`CA{iOB00FCNtE$a&S*9h5>3Q#p?wi z?jt{oBrgGx_WiTi`?8DwVC@B}SIaS%#wJ676BWsC=Zv72!r}XE?-0OpW??{uX7oA7 zz3JUq)RfyB092j(TxBN`rtyl0N!6FKUiVx5R(7^+*Si4Y(e>;(Tf&c;U$bw!ZV>rg zo5`Ji)wWT#S1$TPhGFl6pFY&(6+&ohv{i`n31a9)1HhM&LNBft-l_5(oZQ$co3#qH zt)0AHRPkw>Gn*-)aPohsg>5xMT+5_{Wbm1%=^wjdWELC}G2s&69O5!Oc*2c*tN+IK zjnP_G1J@i|4L&a@p$lYS@>xp*7va4c{HSUHB0KfKT4%eE?R^$^N^B~*v}3$}Qj~}G zI*Q}nrgj#2Q^!d7{JST}>Vv^|G#a5nuFGQL(dHPL{kBsNV!Hy7C=D#vn=~TM(SQmK z`cAgA`Ww-ucd4(xCK!$j4n7qgk@F5>)9l=|6*25WeQM4zD~R`;efpd9(N98vRo(99 zxC#R|Mk#7b&hs~{J@sZ0t`KeABV5_|gIqTW&-N_6r=sXdm0w>891)4U2Se2SbBHf7 zhcD(#pZJH4-QybFf6+?!$IQ+5kbJ^N6L3@)qf=9}(G~*$5 zNe(_d3e(POtX_1gPsJ*$g-VQ;jY%r!l>Ft@Fv$o8%*ISq_H#p_duT{RZ-N(FA zi@v|IUub176C8pWpDm!cuvpag+t9Yj+0{6TpTMT$)@uw%l$O#7IKXUe{9(6~b>YXJ zHlMzEuQ&wV6&YV!WZM%95gOQa5}Lc!+tWFv;O%kcJ%Acbn-;#PJAxQC2+4pf?sI#s zedCjlqS0#~K+i#=*OJi1M;g{;VoHf&(hCt|Hg@NT_+0Qe+GmPN_e}NwqE&R(8wXF} zlKGe>XcgOeEH#0Ywdezb=!v8D1mv;~Y+Aq`k+Ld7zwWU7H{?4ppkkvu0=90Khzo2ezB=Q3L6J?AD}_?(;Hb8b{U zQL&CH%)a!`@;)FB2Ci4Lfo51@0;;3pi?_u7=q2p0hz-ZvksWw6-5cF3JS?<#>hkJ< zTJoH;>k8{~ok3YQM4sChIuhtcdp8FjMFW)y@w&cPRy#f9y7a_EXW-k@(D`Ad_W4m{ z*gA0mlk&Q|y5@+RLbR^^D*UG>p9NrtkZbhx)s{1H2u`2v?4N^2*>{DiA>Vga-1gPA zhd*czRmvtRLPr+Otn-I|x=NTJ19y;8CJ0w?yeOi@Or?L9eaS;bwWs;2tYl+!xXIJ7 z=38`V-g$ofdK(Eq_1d55di%#6hGyTSB(>E;OJM`%E5+aJwRT&{`kF;W`kGU~@dr4l ziuE-=75`&230@PL7kv?vQ1ol(4MVxRLH;ar+2y;S1l_!RUHv2O$SOD`Pe0l7(3RBF*&%8>`1~nN5^~ad=6sw_sw@ya_|EF@48?&oKWo%xLlG0wW-Jx?UFMJC}L$!-XpCbCw}vY$)cYDX;6kuJzn`G#|aY5*+Qbb}Q9B>eBA; z$tYCb|4!V=4~f-*^V}O^S4q)SpO3+^)4CoCI)GfTRu}H ztAC+d;T1ugKnedrfpY$M-1&nQkXvD=^5k6p*)&yu zZl*}=Eq=(>lsVsbd3So-VJ!#cwXn1`i`{)5DfgsfChmh1^;@{+5R>9+e;&xXj_q!c z4!NVJN4vC$QU{1!SUcMl{{`Em3M1Jx8*5xkA8_JKpLaUen7-%E|5Vzj1Qh z5<6P|UU~P3oDvW}8zQ4pjK@W|eWce&NJWhF;2`+NUEt6dS^rH<+B#{7IB~*!WB7I1 z&e&@dNHuVQ5AQ#7OY;91LqmZ$^}bpoIQxHA*9l0o%hXLisnxO3Sn1-%t5zcqw`jtf zm@o#^>}h{fE!$9zfhR zAnyOW>YeZA-u}_!OU7X!Gq0{g+b*QX;dJnQ*uZtzCh(mtd!QS~%4{+&yLh3rRc$7XcTl<4nGTgc70`}on`=OEXCp^ZqP0Cein^tyvc;d7)QL}10pLm*u|HRG<5 zsPPuO)?Uw-&?vQi;B!pK-n914j#zK+`_L!a6pPx!gDhBmqa}l9(7m*M$yImI!gTVH`vA8-ybF<_u`^sP>xeOX;Ns(=lz#6r^I?34U!nWXp%8Xe`~i`M*j zb&`9D6n}3xrO`A*XdFRPYu!uO`FvJ|`TUkVEB1lK^_|`r0!)72w$6PLF6^;WqCRnf zndSAH5aNMVQt1&5Jj3GXe5S-vrTNFlYX`*@21eEYdXzm$bzN?8g^q6Oi&fXQ?Z;KVD`@>t`cYwdWs`<1gZ*2&TBH+v@^p#c_zNen3p%d80^g{`ES3rI^J!SirEtj# z4%hm6$S|O!DW?wQ@eP9&)B%b^N^i%=|&%N4NsYL(Z3HQ#T9q1-Isdh?%&j{h)(~b`c<#o zuffnh&n?f%7<5w7K{N#uRQA1dy)%;Wu!b>>QH%M;rrByF|Eu?)-{JknwlwX8m<;)2 zjC$z~H$?sCfh~c*;O-sWPp^cmR|)u$-`ZC93r7NXp@bpbcC)s4! znmxr{frB488AYE`6JP2U>?qezf$wO*9z=||Ms>!A z>0LP{Rg;EJo!JdCm^KMCOLU+*)g1Fuu}QU^fQ>n|@If^s+tP?hHQd~C>`}FI!pkaC zRbuHvf&@wx=Dr=M^=mY; zxqjDov05zABC9b^;pzX}K!L+p>~4U{UIgT308RYm7DfrC)5yv9|0iRHT|#kHtcox4 z&lkgDpe!Mwk9~l>h1G-_i!z+3wv9-ZVlg2cARHj#BWR%mQ!Vm1BkPGQMklo6{c9K; z*O}SXH?WcI)aHi*!bT^Ec%F(AViT~MutOgrLPnQs$hJr?8p_5XQd!?O)e|lGjnC-A zxrl1eht4BI%EW47wn*t?8TKK-IK7aY5HM7J-+Yf)gT6Svst62@`yBfKqv_X9H_s#Z zS*=;mMO%3QigxOBvz>`yd^Nb{Vpz-a1F0>eKPS`B3!Go_ zomz^T%Co*7O2Tik*&*4zkWjMUuHuW`oXnTdop$pa~jy!49B<8=ci+YAozJ=Ns zG5HQCnlBdm-TfI}Sa0zQW4~x{$Rt6sSmrS^$KQJ{F<>eadk&K?eA?uBTuAWn(x(vbi`Y37F{lN0Wyg+^u@5gKgQ4@p&L6w$Inll4*Ry&mF z4Y5_wKo^QKvabxT0W4x7#E3c+@r!E=c{Y|JBghp6CJpM-Z0u!#t1iaEVw_a#LQleC zK-2C*Kfq$B&+*THRI#U7-fq41)e?IuD`C2iS8(L8xQcCr zu57gb4ZR6d+34{ba+}%bZ30|GiIELP9#p>5U2wRQgfsE{`#BfsYW z7r|JS+BnSiGHGoC(eykhx?e0H4QK&_pOw$e>Ney@(_YgS1oYZ(lidAbKep}h zQcBm?gQ8MMU>Ikhn(c^r6c%Di^^KkVWo8QE>8KR1F+!+Ze;Cj=bIv0mqzx%AN|~gp zi_oXj=>LGFJ;V3J?M5a&v=sY1{R|ImAow6T`a+_^kDZV&cOlTTi)salYeTmR@y1`i z>AiJ#yZ&^C&bn{M@W5apG%jag;K=Lt?uv{VTio`JdJ0%!0 zCL9}ij%@SN<~emX!Mk$th2lp5xb)}W6g#McB>^`WHrOw4rNMK zfD;t_rxO$m(zwMm+))lqP$UHc|59XA28NSp)H=ji!RUSF(wMoFpol~lRK^1uu;W&1 z@*c_kvZ`LgCq38eDT)eTMK;~tm(_6iuvW12u(GhP{E37^vWLwwHFoURI){GB6nN|? zu6693ya0dl8PO7Cq$9?Nu|rGW)6>wBFB# SH{eP+O@!Xp0uRNu+f|;DldRoC|-u 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�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 z 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