OpenCores
URL https://opencores.org/ocsvn/aes-128_pipelined_encryption/aes-128_pipelined_encryption/trunk

Subversion Repositories aes-128_pipelined_encryption

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /aes-128_pipelined_encryption
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

/trunk/rtl/SBox.v
0,0 → 1,308
/*
Project : AES
Standard doc. : FIPS 197
Module name : SBox block
Dependancy :
Design doc. :
References :
Description : Sbox is a lookup/substitution table to
substitute the input byte
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module SBox
(
input clk, //system clock
input reset, //asynch active low reset
input valid_in, //valid input signal
input [7:0] addr, //SBox input byte
output reg [7:0] dout //SBox output
);
 
always @ ( posedge clk or negedge reset)
if (!reset) begin
dout <= 8'h00;
end else begin
if(valid_in) begin
case (addr) //substitution table
8'h00 : dout <= 8'h63;
8'h01 : dout <= 8'h7c;
8'h02 : dout <= 8'h77;
8'h03 : dout <= 8'h7b;
8'h04 : dout <= 8'hf2;
8'h05 : dout <= 8'h6b;
8'h06 : dout <= 8'h6f;
8'h07 : dout <= 8'hc5;
8'h08 : dout <= 8'h30;
8'h09 : dout <= 8'h01;
8'h0a : dout <= 8'h67;
8'h0b : dout <= 8'h2b;
8'h0c : dout <= 8'hfe;
8'h0d : dout <= 8'hd7;
8'h0e : dout <= 8'hab;
8'h0f : dout <= 8'h76;
/****************************************/
8'h10 : dout <= 8'hca;
8'h11 : dout <= 8'h82;
8'h12 : dout <= 8'hc9;
8'h13 : dout <= 8'h7d;
8'h14 : dout <= 8'hfa;
8'h15 : dout <= 8'h59;
8'h16 : dout <= 8'h47;
8'h17 : dout <= 8'hf0;
8'h18 : dout <= 8'had;
8'h19 : dout <= 8'hd4;
8'h1a : dout <= 8'ha2;
8'h1b : dout <= 8'haf;
8'h1c : dout <= 8'h9c;
8'h1d : dout <= 8'ha4;
8'h1e : dout <= 8'h72;
8'h1f : dout <= 8'hc0;
/**********************************************/
8'h20 : dout <= 8'hb7;
8'h21 : dout <= 8'hfd;
8'h22 : dout <= 8'h93;
8'h23 : dout <= 8'h26;
8'h24 : dout <= 8'h36;
8'h25 : dout <= 8'h3f;
8'h26 : dout <= 8'hf7;
8'h27 : dout <= 8'hcc;
8'h28 : dout <= 8'h34;
8'h29 : dout <= 8'ha5;
8'h2a : dout <= 8'he5;
8'h2b : dout <= 8'hf1;
8'h2c : dout <= 8'h71;
8'h2d : dout <= 8'hd8;
8'h2e : dout <= 8'h31;
8'h2f : dout <= 8'h15;
/*****************************************/
8'h30 : dout <= 8'h04;
8'h31 : dout <= 8'hc7;
8'h32 : dout <= 8'h23;
8'h33 : dout <= 8'hc3;
8'h34 : dout <= 8'h18;
8'h35 : dout <= 8'h96;
8'h36 : dout <= 8'h05;
8'h37 : dout <= 8'h9a;
8'h38 : dout <= 8'h07;
8'h39 : dout <= 8'h12;
8'h3a : dout <= 8'h80;
8'h3b : dout <= 8'he2;
8'h3c : dout <= 8'heb;
8'h3d : dout <= 8'h27;
8'h3e : dout <= 8'hb2;
8'h3f : dout <= 8'h75;
/*******************************************/
8'h40 : dout <= 8'h09;
8'h41 : dout <= 8'h83;
8'h42 : dout <= 8'h2c;
8'h43 : dout <= 8'h1a;
8'h44 : dout <= 8'h1b;
8'h45 : dout <= 8'h6e;
8'h46 : dout <= 8'h5a;
8'h47 : dout <= 8'ha0;
8'h48 : dout <= 8'h52;
8'h49 : dout <= 8'h3b;
8'h4a : dout <= 8'hd6;
8'h4b : dout <= 8'hb3;
8'h4c : dout <= 8'h29;
8'h4d : dout <= 8'he3;
8'h4e : dout <= 8'h2f;
8'h4f : dout <= 8'h84;
/**********************************************/
8'h50 : dout <= 8'h53;
8'h51 : dout <= 8'hd1;
8'h52 : dout <= 8'h00;
8'h53 : dout <= 8'hed;
8'h54 : dout <= 8'h20;
8'h55 : dout <= 8'hfc;
8'h56 : dout <= 8'hb1;
8'h57 : dout <= 8'h5b;
8'h58 : dout <= 8'h6a;
8'h59 : dout <= 8'hcb;
8'h5a : dout <= 8'hbe;
8'h5b : dout <= 8'h39;
8'h5c : dout <= 8'h4a;
8'h5d : dout <= 8'h4c;
8'h5e : dout <= 8'h58;
8'h5f : dout <= 8'hcf;
/****************************************/
8'h60 : dout <= 8'hd0;
8'h61 : dout <= 8'hef;
8'h62 : dout <= 8'haa;
8'h63 : dout <= 8'hfb;
8'h64 : dout <= 8'h43;
8'h65 : dout <= 8'h4d;
8'h66 : dout <= 8'h33;
8'h67 : dout <= 8'h85;
8'h68 : dout <= 8'h45;
8'h69 : dout <= 8'hf9;
8'h6a : dout <= 8'h02;
8'h6b : dout <= 8'h7f;
8'h6c : dout <= 8'h50;
8'h6d : dout <= 8'h3c;
8'h6e : dout <= 8'h9f;
8'h6f : dout <= 8'ha8;
/*********************************************/
8'h70 : dout <= 8'h51;
8'h71 : dout <= 8'ha3;
8'h72 : dout <= 8'h40;
8'h73 : dout <= 8'h8f;
8'h74 : dout <= 8'h92;
8'h75 : dout <= 8'h9d;
8'h76 : dout <= 8'h38;
8'h77 : dout <= 8'hf5;
8'h78 : dout <= 8'hbc;
8'h79 : dout <= 8'hb6;
8'h7a : dout <= 8'hda;
8'h7b : dout <= 8'h21;
8'h7c : dout <= 8'h10;
8'h7d : dout <= 8'hff;
8'h7e : dout <= 8'hf3;
8'h7f : dout <= 8'hd2;
/********************************************/
8'h80 : dout <= 8'hcd;
8'h81 : dout <= 8'h0c;
8'h82 : dout <= 8'h13;
8'h83 : dout <= 8'hec;
8'h84 : dout <= 8'h5f;
8'h85 : dout <= 8'h97;
8'h86 : dout <= 8'h44;
8'h87 : dout <= 8'h17;
8'h88 : dout <= 8'hc4;
8'h89 : dout <= 8'ha7;
8'h8a : dout <= 8'h7e;
8'h8b : dout <= 8'h3d;
8'h8c : dout <= 8'h64;
8'h8d : dout <= 8'h5d;
8'h8e : dout <= 8'h19;
8'h8f : dout <= 8'h73;
/***********************************************/
8'h90 : dout <= 8'h60;
8'h91 : dout <= 8'h81;
8'h92 : dout <= 8'h4f;
8'h93 : dout <= 8'hdc;
8'h94 : dout <= 8'h22;
8'h95 : dout <= 8'h2a;
8'h96 : dout <= 8'h90;
8'h97 : dout <= 8'h88;
8'h98 : dout <= 8'h46;
8'h99 : dout <= 8'hee;
8'h9a : dout <= 8'hb8;
8'h9b : dout <= 8'h14;
8'h9c : dout <= 8'hde;
8'h9d : dout <= 8'h5e;
8'h9e : dout <= 8'h0b;
8'h9f : dout <= 8'hdb;
/******************************************/
8'ha0 : dout <= 8'he0;
8'ha1 : dout <= 8'h32;
8'ha2 : dout <= 8'h3a;
8'ha3 : dout <= 8'h0a;
8'ha4 : dout <= 8'h49;
8'ha5 : dout <= 8'h06;
8'ha6 : dout <= 8'h24;
8'ha7 : dout <= 8'h5c;
8'ha8 : dout <= 8'hc2;
8'ha9 : dout <= 8'hd3;
8'haa : dout <= 8'hac;
8'hab : dout <= 8'h62;
8'hac : dout <= 8'h91;
8'had : dout <= 8'h95;
8'hae : dout <= 8'he4;
8'haf : dout <= 8'h79;
/******************************************/
8'hb0 : dout <= 8'he7;
8'hb1 : dout <= 8'hc8;
8'hb2 : dout <= 8'h37;
8'hb3 : dout <= 8'h6d;
8'hb4 : dout <= 8'h8d;
8'hb5 : dout <= 8'hd5;
8'hb6 : dout <= 8'h4e;
8'hb7 : dout <= 8'ha9;
8'hb8 : dout <= 8'h6c;
8'hb9 : dout <= 8'h56;
8'hba : dout <= 8'hf4;
8'hbb : dout <= 8'hea;
8'hbc : dout <= 8'h65;
8'hbd : dout <= 8'h7a;
8'hbe : dout <= 8'hae;
8'hbf : dout <= 8'h08;
/****************************************/
8'hc0 : dout <= 8'hba;
8'hc1 : dout <= 8'h78;
8'hc2 : dout <= 8'h25;
8'hc3 : dout <= 8'h2e;
8'hc4 : dout <= 8'h1c;
8'hc5 : dout <= 8'ha6;
8'hc6 : dout <= 8'hb4;
8'hc7 : dout <= 8'hc6;
8'hc8 : dout <= 8'he8;
8'hc9 : dout <= 8'hdd;
8'hca : dout <= 8'h74;
8'hcb : dout <= 8'h1f;
8'hcc : dout <= 8'h4b;
8'hcd : dout <= 8'hbd;
8'hce : dout <= 8'h8b;
8'hcf : dout <= 8'h8a;
/****************************************/
8'hd0 : dout <= 8'h70;
8'hd1 : dout <= 8'h3e;
8'hd2 : dout <= 8'hb5;
8'hd3 : dout <= 8'h66;
8'hd4 : dout <= 8'h48;
8'hd5 : dout <= 8'h03;
8'hd6 : dout <= 8'hf6;
8'hd7 : dout <= 8'h0e;
8'hd8 : dout <= 8'h61;
8'hd9 : dout <= 8'h35;
8'hda : dout <= 8'h57;
8'hdb : dout <= 8'hb9;
8'hdc : dout <= 8'h86;
8'hdd : dout <= 8'hc1;
8'hde : dout <= 8'h1d;
8'hdf : dout <= 8'h9e;
/*******************************************/
8'he0 : dout <= 8'he1;
8'he1 : dout <= 8'hf8;
8'he2 : dout <= 8'h98;
8'he3 : dout <= 8'h11;
8'he4 : dout <= 8'h69;
8'he5 : dout <= 8'hd9;
8'he6 : dout <= 8'h8e;
8'he7 : dout <= 8'h94;
8'he8 : dout <= 8'h9b;
8'he9 : dout <= 8'h1e;
8'hea : dout <= 8'h87;
8'heb : dout <= 8'he9;
8'hec : dout <= 8'hce;
8'hed : dout <= 8'h55;
8'hee : dout <= 8'h28;
8'hef : dout <= 8'hdf;
/****************************************/
8'hf0 : dout <= 8'h8c;
8'hf1 : dout <= 8'ha1;
8'hf2 : dout <= 8'h89;
8'hf3 : dout <= 8'h0d;
8'hf4 : dout <= 8'hbf;
8'hf5 : dout <= 8'he6;
8'hf6 : dout <= 8'h42;
8'hf7 : dout <= 8'h68;
8'hf8 : dout <= 8'h41;
8'hf9 : dout <= 8'h99;
8'hfa : dout <= 8'h2d;
8'hfb : dout <= 8'h0f;
8'hfc : dout <= 8'hb0;
8'hfd : dout <= 8'h54;
8'hfe : dout <= 8'hbb;
8'hff : dout <= 8'h16;
default : dout <= 8'h00;
endcase
end
end
 
endmodule
/trunk/rtl/KeyExpantion.v
0,0 → 1,73
/*
Project : AES
Standard doc. : FIPS 197
Module name : KeyExpantion block
Dependancy :
Design doc. :
References :
Description : The key Expantion Module is used to
generate round keys from the cipher key using
pipelined architecture
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module KeyExpantion
#
(
parameter DATA_W = 128, //data width
parameter KEY_L = 128, //key length
parameter NO_ROUNDS = 10 //number of rounds
)
(
input clk, //system clock
input reset, //async reset
input valid_in, //input valid in
input [KEY_L-1:0] cipher_key, //cipher key
output [(NO_ROUNDS*DATA_W)-1:0] W, //contains all generated round keys
output [NO_ROUNDS-1:0] valid_out //output valid signal
);
 
wire [31:0] RCON [0:9]; //round constant array of words
wire [NO_ROUNDS-1:0] keygen_valid_out; //every bit represens output valid signal for every RoundKeyGen module
wire [DATA_W-1:0] W_array [0:NO_ROUNDS-1]; //array of round keys to form W output
 
//round connstant values
assign RCON[0] = 32'h01000000;
assign RCON[1] = 32'h02000000;
assign RCON[2] = 32'h04000000;
assign RCON[3] = 32'h08000000;
assign RCON[4] = 32'h10000000;
assign RCON[5] = 32'h20000000;
assign RCON[6] = 32'h40000000;
assign RCON[7] = 32'h80000000;
assign RCON[8] = 32'h1b000000;
assign RCON[9] = 32'h36000000;
 
//instantiate number RounkeyGen modules = number of rounds to get number of roundkeys = number of rounds
RoundKeyGen #(KEY_L)RKGEN_U0(clk,reset,RCON[0],valid_in,cipher_key,W_array[0],keygen_valid_out[0]);
 
genvar i;
generate
for (i=1 ;i<NO_ROUNDS;i=i+1) begin : ROUND_KEY_GEN
RoundKeyGen #(KEY_L)RKGEN_U(clk,reset,RCON[i],keygen_valid_out[i-1],W_array[i-1],W_array[i],keygen_valid_out[i]);
end
endgenerate
 
//assigning all the round keys to one output
assign W = { W_array[0],
W_array[1],
W_array[2],
W_array[3],
W_array[4],
W_array[5],
W_array[6],
W_array[7],
W_array[8],
W_array[9] };
assign valid_out = keygen_valid_out;
endmodule
/trunk/rtl/MixColumns.v
0,0 → 1,72
/*
Project : AES
Standard doc. : FIPS 197
Module name : MixColumns block
Dependancy :
Design doc. :
References :
Description : This Module is used to perform Mix Columns calculations
as declared in standard document
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module MixColumns
#
(
parameter DATA_W = 128 //data width
)
(
input clk, //system clock
input reset, //asynch active low reset
input valid_in, //input valid signal
input [DATA_W-1:0] data_in, //input data
output reg valid_out, //output valid signal
output reg [DATA_W-1:0] data_out //output data
)
;
 
wire [7:0] State [0:15]; //array of wires to form state array
wire [7:0] State_Mulx2 [0:15]; //array of wires to perform multiplication by 02
wire [7:0] State_Mulx3 [0:15]; //array of wires to perform multiplication by 03
 
genvar i ;
generate
for(i=0;i<=15;i=i+1) begin :MUL
assign State[i]= data_in[(((15-i)*8)+7):((15-i)*8)]; // filling state array as each row represents one byte ex: state[0] means first byte and so on
assign State_Mulx2[i]= (State[i][7])?((State[i]<<1) ^ 8'h1b):(State[i]<<1); //Multiplication by {02} in finite field is done shifting 1 bit lift //and xoring with 1b if the most bit =1
assign State_Mulx3[i]= (State_Mulx2[i])^State[i]; // Multiply by {03} in finite field can be done as multiplication by {02 xor 01}
end
endgenerate
 
 
always@(posedge clk or negedge reset)
if(!reset)begin
valid_out <= 1'b0;
data_out <= 'b0;
end else begin
if(valid_in) begin //mul by 2 and mul by 3 are used to perform matrix multiplication for each column
data_out[(15*8)+7:(15*8)]<= State_Mulx2[0] ^ State_Mulx3[1] ^ State[2] ^ State[3]; //first column
data_out[(14*8)+7:(14*8)]<= State[0] ^ State_Mulx2[1] ^ State_Mulx3[2] ^ State[3];
data_out[(13*8)+7:(13*8)]<= State[0] ^ State[1] ^ State_Mulx2[2] ^ State_Mulx3[3];
data_out[(12*8)+7:(12*8)]<= State_Mulx3[0] ^ State[1] ^ State[2] ^ State_Mulx2[3];
/*********************************************************************************/
data_out[(11*8)+7:(11*8)]<= State_Mulx2[4] ^ State_Mulx3[5] ^ State[6] ^ State[7]; //second column
data_out[(10*8)+7:(10*8)]<= State[4] ^ State_Mulx2[5] ^ State_Mulx3[6] ^ State[7];
data_out[(9*8)+7:(9*8)] <= State[4] ^ State[5] ^ State_Mulx2[6] ^ State_Mulx3[7];
data_out[(8*8)+7:(8*8)]<= State_Mulx3[4] ^ State[5] ^ State[6] ^ State_Mulx2[7];
/**********************************************************************************/
data_out[(7*8)+7:(7*8)]<= State_Mulx2[8] ^ State_Mulx3[9] ^ State[10] ^ State[11]; //third column
data_out[(6*8)+7:(6*8)]<= State[8] ^ State_Mulx2[9] ^ State_Mulx3[10] ^ State[11];
data_out[(5*8)+7:(5*8)]<= State[8] ^ State[9] ^ State_Mulx2[10] ^ State_Mulx3[11];
data_out[(4*8)+7:(4*8)]<= State_Mulx3[8] ^ State[9] ^ State[10] ^ State_Mulx2[11];
/***********************************************************************************/
data_out[(3*8)+7:(3*8)]<= State_Mulx2[12] ^ State_Mulx3[13] ^ State[14] ^ State[15]; //fourth column
data_out[(2*8)+7:(2*8)]<= State[12] ^ State_Mulx2[13] ^ State_Mulx3[14] ^ State[15];
data_out[(1*8)+7:(1*8)]<= State[12] ^ State[13] ^ State_Mulx2[14] ^ State_Mulx3[15];
data_out[(0*8)+7:(0*8)]<= State_Mulx3[12] ^ State[13] ^ State[14] ^ State_Mulx2[15];
end
valid_out <= valid_in;
end
endmodule
/trunk/rtl/SubBytes.v
0,0 → 1,47
/*
Project : AES
Standard doc. : FIPS 197
Module name : SubBytes block
Dependancy :
Design doc. :
References :
Description : uses SBox module to substitute every bytein the 128bit data
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module SubBytes
#
(
parameter DATA_W = 128, //data width
parameter NO_BYTES = DATA_W >> 3 //no of bytes = data width / 8
)
(
input clk, //system clock
input reset, //asynch active low reset
input valid_in, //input valid signal
input [DATA_W-1:0] data_in, //input data
output reg valid_out, //output valid signal
output [DATA_W-1:0] data_out //output data
)
;
 
genvar i;
generate //generating sbox roms
for (i=0; i< NO_BYTES ; i=i+1) begin : ROM
SBox ROM(clk,reset,valid_in,data_in[(i*8)+7:(i*8)],data_out[(i*8)+7:(i*8)]);
end
endgenerate
 
always@(posedge clk or negedge reset) //valid out register
if(!reset)begin
valid_out <= 1'b0;
end else begin
valid_out <= valid_in;
end
endmodule
 
 
 
 
/trunk/rtl/Top_PipelinedCipher.v
0,0 → 1,82
/*
Project : AES
Standard doc. : FIPS 197
Module name : Top_AES_PipelinedCipher
Dependancy :
Design doc. :
References :
Description : this is the top module of the design which forms
rounds and connects KeyExpantion using pipelined
architecture
Owner : Amr Salah
*/
 
 
`timescale 1 ns/1 ps
 
module Top_PipelinedCipher
#
(
parameter DATA_W = 128, //data width
parameter KEY_L = 128, //key length
parameter NO_ROUNDS = 10 //number of rounds
)
 
(
input clk, //system clock
input reset, //asynch reset
input data_valid_in, //data valid signal
input cipherkey_valid_in, //cipher key valid signal
input [KEY_L-1:0] cipher_key, //cipher key
input [DATA_W-1:0] plain_text, //plain text
output valid_out, //output valid signal
output [DATA_W-1:0] cipher_text //cipher text
);
 
wire [NO_ROUNDS-1:0] valid_round_key; //all round keys valid signals KeyExpantion output
wire [NO_ROUNDS-1:0] valid_round_data; //all rounds ouput data valid signals
wire [DATA_W-1:0] data_round [0:NO_ROUNDS-1]; //all rounds data
wire valid_sub2shift; //for final round connection
wire valid_shift2key; //
wire [DATA_W-1:0]data_sub2shift; //
wire [DATA_W-1:0]data_shift2key; //
wire [(NO_ROUNDS*DATA_W)-1:0] W; //all round keys
 
reg[DATA_W-1:0] data_shift2key_delayed; //for delay register
reg valid_shift2key_delayed;
 
//instantiate Key Expantion which will feed every round with round key
KeyExpantion #(DATA_W,KEY_L,NO_ROUNDS) U_KEYEXP(clk,reset,cipherkey_valid_in,cipher_key,W,valid_round_key);
 
//due to algorithm,first cipher key will be xored witht plain text
AddRoundKey #(DATA_W)U0_ARK(clk,reset,data_valid_in,cipherkey_valid_in,plain_text,cipher_key,valid_round_data[0],data_round[0]);
 
//instantiate all rounds , connect them with key expantion
genvar i;
generate
for(i=0;i<NO_ROUNDS-1;i=i+1) begin : ROUND
Round #(DATA_W)U_ROUND(clk,reset,valid_round_data[i],valid_round_key[i],data_round[i],W[(NO_ROUNDS-i)*DATA_W-1:(NO_ROUNDS-i-1)*DATA_W],valid_round_data[i+1],data_round[i+1]);
end
endgenerate
 
//this is the final round it doesn't contain mixcolumns as declared in fips197 standard document
SubBytes #(DATA_W) U_SUB (clk,reset,valid_round_data[NO_ROUNDS-1],data_round[NO_ROUNDS-1],valid_sub2shift,data_sub2shift);
ShiftRows #(DATA_W) U_SH (clk,reset,valid_sub2shift,data_sub2shift,valid_shift2key,data_shift2key);
AddRoundKey #(DATA_W) U_KEY (clk,reset,valid_shift2key_delayed,valid_round_key[NO_ROUNDS-1],data_shift2key_delayed,W[DATA_W-1:0],valid_out,cipher_text);
 
/*as the final round has only three stages a delay register should be introduced
to be balanced with key expantion*/
always @(posedge clk or negedge reset)
 
if(!reset)begin
valid_shift2key_delayed <= 1'b0;
data_shift2key_delayed <= 'b0;
end else begin
 
if(valid_shift2key)begin
data_shift2key_delayed <= data_shift2key;
end
valid_shift2key_delayed <= valid_shift2key;
end
 
endmodule
/trunk/rtl/Round.v
0,0 → 1,52
/*
Project : AES
Standard doc. : FIPS 197
Module name : Round block
Dependancy :
Design doc. :
References :
Description : This module is used to connect
SubBytes-ShiftRows-MixColumns-AddRoundKey modules
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
module Round
#
(
parameter DATA_W = 128 //data width
)
(
input clk, //system clock
input reset, //asynch active low reset
input data_valid_in, //data valid signal
input key_valid_in, //key valid signal
input [DATA_W-1:0] data_in, //input data
input [DATA_W-1:0] round_key, //round key
output valid_out, //output valid signal
output [DATA_W-1:0] data_out //output data
)
;
//wires for connection
wire [DATA_W-1:0] data_sub2shift;
wire [DATA_W-1:0] data_shift2mix;
wire [DATA_W-1:0] data_mix2key;
 
wire valid_sub2shift;
wire valid_shift2mix;
wire valid_mix2key;
 
///////////////////////////////SubBytes///////////////////////////////////////////////////
SubBytes #(DATA_W) U_SUB (clk,reset,data_valid_in,data_in,valid_sub2shift,data_sub2shift);
 
//////////////////////////////ShiftRows///////////////////////////////////////////////////////////
ShiftRows #(DATA_W) U_SH (clk,reset,valid_sub2shift,data_sub2shift,valid_shift2mix,data_shift2mix);
 
//////////////////////////////MixColumns//////////////////////////////////////////////////////////
MixColumns #(DATA_W) U_MIX (clk,reset,valid_shift2mix,data_shift2mix,valid_mix2key,data_mix2key);
 
/////////////////////////////AddRoundKey/////////////////////////////////////////////////////////////////////
AddRoundKey #(DATA_W) U_KEY (clk,reset,valid_mix2key,key_valid_in,data_mix2key,round_key,valid_out,data_out);
 
endmodule
/trunk/rtl/ShiftRows.v
0,0 → 1,58
/*
Project : AES
Standard doc. : FIPS 197
Module name : ShiftRows block
Dependancy :
Design doc. :
References :
Description : this module is used to arrange data in the state array
and shifting rows of this array as declared on the standard document
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module ShiftRows
#
(
parameter DATA_W = 128 //data width
)
(
input clk, //system clock
input reset, //asynch active low reset
input valid_in, //input valid signal
input [DATA_W-1:0] data_in, //input data
output reg valid_out, //output valid signal
output reg [DATA_W-1:0] data_out //output data
)
;
 
wire [7:0] State [0:15]; //array of wires to form state array
 
genvar i ;
generate
// filling state array as each row represents one byte ex: state[0] means first byte and so on
for(i=0;i<=15;i=i+1) begin :STATE
assign State[i]= data_in[(((15-i)*8)+7):((15-i)*8)];
end
endgenerate
always @(posedge clk or negedge reset)
 
if(!reset)begin
valid_out <= 1'b0;
data_out <= 'b0;
end else begin
 
if(valid_in)begin //shifting state rows as delared in fips197 standard document
data_out[(15*8)+7:(12*8)] <= {State[0],State[5],State[10],State[15]};
data_out[(11*8)+7:(8*8)] <= {State[4],State[9],State[14],State[3]};
data_out[(7*8)+7:(4*8)] <= {State[8],State[13],State[2],State[7]};
data_out[(3*8)+7:(0*8)] <= {State[12],State[1],State[6],State[11]};
end
valid_out <= valid_in;
end
endmodule
/trunk/rtl/AddRoundKey.v
0,0 → 1,42
/*
Project : AES
Standard doc. : FIPS 197
Module name : AddRoundKey block
Dependancy :
Design doc. :
References :
Description : This module is used for xoring data and round key
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module AddRoundKey
#
(
parameter DATA_W = 128 //data width
)
(
input clk, //system clock
input reset, //asynch active low reset
input data_valid_in, //data valid signal
input key_valid_in, //key valid signal
input [DATA_W-1:0] data_in, //input data
input [DATA_W-1:0] round_key, //input round key
output reg valid_out, //output valid signal
output reg [DATA_W-1:0] data_out //output data
)
;
 
always@(posedge clk or negedge reset)
if(!reset)begin
data_out <= 'b0;
valid_out <= 1'b0;
end
else begin
if(data_valid_in && key_valid_in) begin
data_out <= data_in ^ round_key; //xoring data and round key
end
valid_out <= data_valid_in & key_valid_in;
end
endmodule
/trunk/rtl/RoundKeyGen.v
0,0 → 1,101
/*
Project : AES
Standard doc. : FIPS 197
Module name : RoundKeyGen block
Dependancy :
Design doc. :
References :
Description : This module is used to perform the process
of round key generation from input key
this module is the basic block of key expantion module
Owner : Amr Salah
*/
 
`timescale 1 ns/1 ps
 
module RoundKeyGen
#
(
parameter KEY_L = 128, //key length
parameter WORD = 32 //a parameter to represent WORD = 4 bytes = 32 bit
)
(
input clk, //system clk
input reset, //asynch active low reset
input [WORD-1:0] RCON_Word, //round constant word
input valid_in, //input valid signal
input [KEY_L-1:0] key, //input key
output reg [KEY_L-1:0]round_key, //round key
output reg valid_out //output valid signal
);
 
wire [WORD-1:0] Key_RotWord;
reg [KEY_L-1:0] Key_FirstStage;
reg [KEY_L-1:0] Key_SecondStage;
reg [KEY_L-1:0] round_key_delayed;
reg valid_FirstStage;
reg valid_round_key;
wire [WORD-1:0] Key_SubBytes;
wire subbytes_valid_out;
wire [KEY_L-1:0] temp_round_key;
 
//The keygeneration stages should be balanced with the 4 round stages(SubBytes-ShiftRows-MixColumns-AddRoundKey)
//in order to let the round key and the data meet at the same time in the AddRoundKey module
 
/******************************************First Stage Register***********************************************************/
always @(posedge clk or negedge reset)
if(!reset)begin
valid_FirstStage <= 1'b0;
Key_FirstStage <= 'b0;
end else begin
if(valid_in)begin
Key_FirstStage <= key;
end
valid_FirstStage <= valid_in;
end
/***********************************************Second Stage Register*******************************************************/
always @(posedge clk or negedge reset)
if(!reset)begin
Key_SecondStage <= 'b0;
end else begin
if(valid_FirstStage)begin
Key_SecondStage <= Key_FirstStage;
end
end
/*******************************************************RotWord****************************************************************/
assign Key_RotWord = {Key_FirstStage[WORD-9:0],Key_FirstStage[WORD-1:WORD-8]}; //rotation of the least word in key
 
/**************************************************SubBytes (Parallel to second stage register)*******************************/
//perform subbytes operation on the result word of rotword step
SubBytes #(WORD) SUB_U (clk,reset,valid_FirstStage,Key_RotWord,subbytes_valid_out,Key_SubBytes);
 
/***************************************************Round Key calculations ***********************************************/
assign temp_round_key[4*WORD-1:3*WORD] = Key_SecondStage[4*WORD-1:3*WORD] ^ Key_SubBytes ^ RCON_Word;
assign temp_round_key[3*WORD-1:2*WORD] = Key_SecondStage[3*WORD-1:2*WORD] ^ temp_round_key[4*WORD-1:3*WORD] ;
assign temp_round_key[2*WORD-1:WORD] = Key_SecondStage[2*WORD-1:WORD] ^ temp_round_key[3*WORD-1:2*WORD];
assign temp_round_key[WORD-1:0] = Key_SecondStage[WORD-1:0] ^ temp_round_key[2*WORD-1:WORD];
 
/***************************************************Roundkey Register (Third Stage)******************************************/
always @(posedge clk or negedge reset)
if(!reset)begin
round_key_delayed <= 'b0;
valid_round_key <= 1'b0;
end else begin
if(subbytes_valid_out)begin
round_key_delayed <= temp_round_key;
end
valid_round_key <= subbytes_valid_out;
end
/****************************************Out Put Register (Fourth Stage)*********************************************/
always @(posedge clk or negedge reset)
if(!reset)begin
valid_out <= 1'b0;
round_key <= 'b0;
end else begin
if(valid_round_key)begin
round_key <= round_key_delayed;
end
valid_out <= valid_round_key;
end
 
endmodule
/trunk/doc/AES_Pipelined_Cipher.pdf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
trunk/doc/AES_Pipelined_Cipher.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/doc/release_notes.txt =================================================================== --- trunk/doc/release_notes.txt (nonexistent) +++ trunk/doc/release_notes.txt (revision 2) @@ -0,0 +1,30 @@ +DESIGN : 128 bit AES Pipelined Cipher + +RELEASE DATE: 07-07-2013 + +REVISION 0.0 + +FEATURES : + +-One clock domain +-Asynchronous reset +-128 bit data +-128 bit Cipher Key +-Optimized for speed +-Pipelined architecture + +BlOCKS STATUS: + +Top_PipelinedCipher completed - Functionally Verified +KeyExpantion completed - Functionally Verified +RoundKeyGen completed - Functionally Verified +Round completed - Functionally Verified +SubBytes completed - Functionally Verified +SBox completed - Functionally Verified +ShiftRows completed - Functionally Verified +MixColumns completed - Functionally Verified +AddRoundKey completed - Functionally Verified + +WHOLE DESIGN : completed - Functionally Verified using AESVS document test vectors (284 vector) + Synthesis , Place and Route on Xilinx virtex 6 6vcx240tff784-2 + Post Place and Route Simulation Verified \ No newline at end of file Index: trunk/sim/Top_PipelinedCipher_tb.v =================================================================== --- trunk/sim/Top_PipelinedCipher_tb.v (nonexistent) +++ trunk/sim/Top_PipelinedCipher_tb.v (revision 2) @@ -0,0 +1,159 @@ +/* +Project : AES +Standard doc. : FIPS 197 +Module name : Top_AES_PipelinedCipher testbench +Dependancy : +Design doc. : +References : +Description : +Owner : Amr Salah +*/ + +`timescale 1 ns/1 ps + +module Top_PipelinedCipher_tb(); + +parameter DATA_W = 128; //data width +parameter KEY_L = 128; //key length +parameter NO_ROUNDS = 10; //number of rounds +parameter Clk2Q = 2; //Clk-Q delay +parameter No_Patterns = 284; //number of patterns + +reg clk; +reg reset; +reg data_valid_in; +reg cipherkey_valid_in; +reg [KEY_L-1:0] cipher_key; +reg [DATA_W-1:0] plain_text; +wire valid_out; +wire[DATA_W-1:0]cipher_text; +reg dut_error; +reg [DATA_W-1:0] data_expected; +reg [DATA_W-1:0] data_input_vectors [0:No_Patterns-1] ; +reg [DATA_W-1:0] cipherkey_input_vectors [0:No_Patterns-1] ; +reg [DATA_W-1:0] output_vectors [0:No_Patterns-1] ; + +integer i; + +Top_PipelinedCipher U //connecting DUT +( +.clk(clk), +.reset(reset), +.data_valid_in(data_valid_in), +.cipherkey_valid_in(cipherkey_valid_in), +.cipher_key(cipher_key), +.plain_text(plain_text), +.valid_out(valid_out), +.cipher_text(cipher_text) +); + +event terminate_sim; +event reset_enable; + +initial begin //reading input data and cipherkey vectors and expected output vectors + +$readmemh("topcipher_data_test_inputs.txt",data_input_vectors); +$readmemh("topcipher_key_test_inputs.txt",cipherkey_input_vectors); +$readmemh("topcipher_test_outputs.txt",output_vectors); + +end + +initial begin + $display ("###################################################"); + clk = 0; + reset = 1; + data_valid_in = 0; + cipherkey_valid_in = 0; + dut_error = 0; //design error counter +end + +always + #5 clk = !clk; //clock generator + +`ifndef GATES //if not gate simulation +initial begin + $dumpfile("Top_PipelinedCipher.vcd"); + $dumpvars; +end +`endif + +initial +forever @ (terminate_sim) begin //simulation termination logic + $display ("Terminating simulation"); + if (dut_error == 0) begin + $display ("Simulation Result : PASSED"); + end + else begin + $display ("Simulation Result : FAILED"); + end + $display ("###################################################"); + #1 $stop; + +end + +event reset_done; + +initial //reset logic +forever begin + @ (reset_enable); + @ (negedge clk) + $display ("Applying reset"); + reset = 0; + data_expected = 'b0; + @ (negedge clk) + reset = 1; + $display ("Came out of Reset"); + -> reset_done; +end + +initial begin + #10 -> reset_enable; + @ (reset_done); + + for (i=0;i< No_Patterns;i=i+1) begin //apply inputs + @ (posedge clk) + #Clk2Q + data_valid_in = 1; //assert valid signals + cipherkey_valid_in = 1; + plain_text = data_input_vectors[i]; + cipher_key = cipherkey_input_vectors[i]; + end + + @(posedge clk) + data_valid_in = 0; //deassert valid signals + cipherkey_valid_in = 0; + +end + +integer j; + +initial @(reset_done) begin + +repeat((4 * NO_ROUNDS)+1) begin //waiting for first output (latency) +@(posedge clk); +end + +for(j=0;j< No_Patterns;j=j+1) begin //assign expected outputs +@(posedge clk) +data_expected = output_vectors[j]; +end + +end + + +//compare logic + +always @ (posedge clk) begin +if (valid_out || (!reset)) begin + if(data_expected != cipher_text) begin + $display ("DUT ERROR AT TIME%d",$time); + $display ("Expected Data value %h, Got Data Value %h", data_expected, cipher_text); + dut_error = 1; + -> terminate_sim; //stop simulation when error occures + end +end +if(j == No_Patterns) begin //terminate simulation after the end of output vectors + -> terminate_sim; +end + end +endmodule \ No newline at end of file Index: trunk/sim/topcipher_key_test_inputs.txt =================================================================== --- trunk/sim/topcipher_key_test_inputs.txt (nonexistent) +++ trunk/sim/topcipher_key_test_inputs.txt (revision 2) @@ -0,0 +1,284 @@ +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +10a58869d74be5a374cf867cfb473859 +caea65cdbb75e9169ecd22ebe6e54675 +a2e2fa9baf7d20822ca9f0542f764a41 +b6364ac4e1de1e285eaf144a2415f7a0 +64cf9c7abc50b888af65f49d521944b2 +47d6742eefcc0465dc96355e851b64d9 +3eb39790678c56bee34bbcdeccf6cdb5 +64110a924f0743d500ccadae72c13427 +18d8126516f8a12ab1a36d9f04d68e51 +f530357968578480b398a3c251cd1093 +da84367f325d42d601b4326964802e8e +e37b1c6aa2846f6fdb413f238b089f23 +6c002b682483e0cabcc731c253be5674 +143ae8ed6555aba96110ab58893a8ae1 +b69418a85332240dc82492353956ae0c +71b5c08a1993e1362e4d0ce9b22b78d5 +e234cdca2606b81f29408d5f6da21206 +13237c49074a3da078dc1d828bb78c6f +3071a2a48fe6cbd04f1a129098e308f8 +90f42ec0f68385f2ffc5dfc03a654dce +febd9a24d8b65c1c787d50a4ed3619a9 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +80000000000000000000000000000000 +c0000000000000000000000000000000 +e0000000000000000000000000000000 +f0000000000000000000000000000000 +f8000000000000000000000000000000 +fc000000000000000000000000000000 +fe000000000000000000000000000000 +ff000000000000000000000000000000 +ff800000000000000000000000000000 +ffc00000000000000000000000000000 +ffe00000000000000000000000000000 +fff00000000000000000000000000000 +fff80000000000000000000000000000 +fffc0000000000000000000000000000 +fffe0000000000000000000000000000 +ffff0000000000000000000000000000 +ffff8000000000000000000000000000 +ffffc000000000000000000000000000 +ffffe000000000000000000000000000 +fffff000000000000000000000000000 +fffff800000000000000000000000000 +fffffc00000000000000000000000000 +fffffe00000000000000000000000000 +ffffff00000000000000000000000000 +ffffff80000000000000000000000000 +ffffffc0000000000000000000000000 +ffffffe0000000000000000000000000 +fffffff0000000000000000000000000 +fffffff8000000000000000000000000 +fffffffc000000000000000000000000 +fffffffe000000000000000000000000 +ffffffff000000000000000000000000 +ffffffff800000000000000000000000 +ffffffffc00000000000000000000000 +ffffffffe00000000000000000000000 +fffffffff00000000000000000000000 +fffffffff80000000000000000000000 +fffffffffc0000000000000000000000 +fffffffffe0000000000000000000000 +ffffffffff0000000000000000000000 +ffffffffff8000000000000000000000 +ffffffffffc000000000000000000000 +ffffffffffe000000000000000000000 +fffffffffff000000000000000000000 +fffffffffff800000000000000000000 +fffffffffffc00000000000000000000 +fffffffffffe00000000000000000000 +ffffffffffff00000000000000000000 +ffffffffffff80000000000000000000 +ffffffffffffc0000000000000000000 +ffffffffffffe0000000000000000000 +fffffffffffff0000000000000000000 +fffffffffffff8000000000000000000 +fffffffffffffc000000000000000000 +fffffffffffffe000000000000000000 +ffffffffffffff000000000000000000 +ffffffffffffff800000000000000000 +ffffffffffffffc00000000000000000 +ffffffffffffffe00000000000000000 +fffffffffffffff00000000000000000 +fffffffffffffff80000000000000000 +fffffffffffffffc0000000000000000 +fffffffffffffffe0000000000000000 +ffffffffffffffff0000000000000000 +ffffffffffffffff8000000000000000 +ffffffffffffffffc000000000000000 +ffffffffffffffffe000000000000000 +fffffffffffffffff000000000000000 +fffffffffffffffff800000000000000 +fffffffffffffffffc00000000000000 +fffffffffffffffffe00000000000000 +ffffffffffffffffff00000000000000 +ffffffffffffffffff80000000000000 +ffffffffffffffffffc0000000000000 +ffffffffffffffffffe0000000000000 +fffffffffffffffffff0000000000000 +fffffffffffffffffff8000000000000 +fffffffffffffffffffc000000000000 +fffffffffffffffffffe000000000000 +ffffffffffffffffffff000000000000 +ffffffffffffffffffff800000000000 +ffffffffffffffffffffc00000000000 +ffffffffffffffffffffe00000000000 +fffffffffffffffffffff00000000000 +fffffffffffffffffffff80000000000 +fffffffffffffffffffffc0000000000 +fffffffffffffffffffffe0000000000 +ffffffffffffffffffffff0000000000 +ffffffffffffffffffffff8000000000 +ffffffffffffffffffffffc000000000 +ffffffffffffffffffffffe000000000 +fffffffffffffffffffffff000000000 +fffffffffffffffffffffff800000000 +fffffffffffffffffffffffc00000000 +fffffffffffffffffffffffe00000000 +ffffffffffffffffffffffff00000000 +ffffffffffffffffffffffff80000000 +ffffffffffffffffffffffffc0000000 +ffffffffffffffffffffffffe0000000 +fffffffffffffffffffffffff0000000 +fffffffffffffffffffffffff8000000 +fffffffffffffffffffffffffc000000 +fffffffffffffffffffffffffe000000 +ffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffff800000 +ffffffffffffffffffffffffffc00000 +ffffffffffffffffffffffffffe00000 +fffffffffffffffffffffffffff00000 +fffffffffffffffffffffffffff80000 +fffffffffffffffffffffffffffc0000 +fffffffffffffffffffffffffffe0000 +ffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffff8000 +ffffffffffffffffffffffffffffc000 +ffffffffffffffffffffffffffffe000 +fffffffffffffffffffffffffffff000 +fffffffffffffffffffffffffffff800 +fffffffffffffffffffffffffffffc00 +fffffffffffffffffffffffffffffe00 +ffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffff80 +ffffffffffffffffffffffffffffffc0 +ffffffffffffffffffffffffffffffe0 +fffffffffffffffffffffffffffffff0 +fffffffffffffffffffffffffffffff8 +fffffffffffffffffffffffffffffffc +fffffffffffffffffffffffffffffffe +ffffffffffffffffffffffffffffffff \ No newline at end of file Index: trunk/sim/topcipher_data_test_inputs.txt =================================================================== --- trunk/sim/topcipher_data_test_inputs.txt (nonexistent) +++ trunk/sim/topcipher_data_test_inputs.txt (revision 2) @@ -0,0 +1,284 @@ +f34481ec3cc627bacd5dc3fb08f273e6 +9798c4640bad75c7c3227db910174e72 +96ab5c2ff612d9dfaae8c31f30c42168 +6a118a874519e64e9963798a503f1d35 +cb9fceec81286ca3e989bd979b0cb284 +b26aeb1874e47ca8358ff22378f09144 +58c8e00b2631686d54eab84b91f0aca1 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +80000000000000000000000000000000 +c0000000000000000000000000000000 +e0000000000000000000000000000000 +f0000000000000000000000000000000 +f8000000000000000000000000000000 +fc000000000000000000000000000000 +fe000000000000000000000000000000 +ff000000000000000000000000000000 +ff800000000000000000000000000000 +ffc00000000000000000000000000000 +ffe00000000000000000000000000000 +fff00000000000000000000000000000 +fff80000000000000000000000000000 +fffc0000000000000000000000000000 +fffe0000000000000000000000000000 +ffff0000000000000000000000000000 +ffff8000000000000000000000000000 +ffffc000000000000000000000000000 +ffffe000000000000000000000000000 +fffff000000000000000000000000000 +fffff800000000000000000000000000 +fffffc00000000000000000000000000 +fffffe00000000000000000000000000 +ffffff00000000000000000000000000 +ffffff80000000000000000000000000 +ffffffc0000000000000000000000000 +ffffffe0000000000000000000000000 +fffffff0000000000000000000000000 +fffffff8000000000000000000000000 +fffffffc000000000000000000000000 +fffffffe000000000000000000000000 +ffffffff000000000000000000000000 +ffffffff800000000000000000000000 +ffffffffc00000000000000000000000 +ffffffffe00000000000000000000000 +fffffffff00000000000000000000000 +fffffffff80000000000000000000000 +fffffffffc0000000000000000000000 +fffffffffe0000000000000000000000 +ffffffffff0000000000000000000000 +ffffffffff8000000000000000000000 +ffffffffffc000000000000000000000 +ffffffffffe000000000000000000000 +fffffffffff000000000000000000000 +fffffffffff800000000000000000000 +fffffffffffc00000000000000000000 +fffffffffffe00000000000000000000 +ffffffffffff00000000000000000000 +ffffffffffff80000000000000000000 +ffffffffffffc0000000000000000000 +ffffffffffffe0000000000000000000 +fffffffffffff0000000000000000000 +fffffffffffff8000000000000000000 +fffffffffffffc000000000000000000 +fffffffffffffe000000000000000000 +ffffffffffffff000000000000000000 +ffffffffffffff800000000000000000 +ffffffffffffffc00000000000000000 +ffffffffffffffe00000000000000000 +fffffffffffffff00000000000000000 +fffffffffffffff80000000000000000 +fffffffffffffffc0000000000000000 +fffffffffffffffe0000000000000000 +ffffffffffffffff0000000000000000 +ffffffffffffffff8000000000000000 +ffffffffffffffffc000000000000000 +ffffffffffffffffe000000000000000 +fffffffffffffffff000000000000000 +fffffffffffffffff800000000000000 +fffffffffffffffffc00000000000000 +fffffffffffffffffe00000000000000 +ffffffffffffffffff00000000000000 +ffffffffffffffffff80000000000000 +ffffffffffffffffffc0000000000000 +ffffffffffffffffffe0000000000000 +fffffffffffffffffff0000000000000 +fffffffffffffffffff8000000000000 +fffffffffffffffffffc000000000000 +fffffffffffffffffffe000000000000 +ffffffffffffffffffff000000000000 +ffffffffffffffffffff800000000000 +ffffffffffffffffffffc00000000000 +ffffffffffffffffffffe00000000000 +fffffffffffffffffffff00000000000 +fffffffffffffffffffff80000000000 +fffffffffffffffffffffc0000000000 +fffffffffffffffffffffe0000000000 +ffffffffffffffffffffff0000000000 +ffffffffffffffffffffff8000000000 +ffffffffffffffffffffffc000000000 +ffffffffffffffffffffffe000000000 +fffffffffffffffffffffff000000000 +fffffffffffffffffffffff800000000 +fffffffffffffffffffffffc00000000 +fffffffffffffffffffffffe00000000 +ffffffffffffffffffffffff00000000 +ffffffffffffffffffffffff80000000 +ffffffffffffffffffffffffc0000000 +ffffffffffffffffffffffffe0000000 +fffffffffffffffffffffffff0000000 +fffffffffffffffffffffffff8000000 +fffffffffffffffffffffffffc000000 +fffffffffffffffffffffffffe000000 +ffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffff800000 +ffffffffffffffffffffffffffc00000 +ffffffffffffffffffffffffffe00000 +fffffffffffffffffffffffffff00000 +fffffffffffffffffffffffffff80000 +fffffffffffffffffffffffffffc0000 +fffffffffffffffffffffffffffe0000 +ffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffff8000 +ffffffffffffffffffffffffffffc000 +ffffffffffffffffffffffffffffe000 +fffffffffffffffffffffffffffff000 +fffffffffffffffffffffffffffff800 +fffffffffffffffffffffffffffffc00 +fffffffffffffffffffffffffffffe00 +ffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffff80 +ffffffffffffffffffffffffffffffc0 +ffffffffffffffffffffffffffffffe0 +fffffffffffffffffffffffffffffff0 +fffffffffffffffffffffffffffffff8 +fffffffffffffffffffffffffffffffc +fffffffffffffffffffffffffffffffe +ffffffffffffffffffffffffffffffff +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 \ No newline at end of file Index: trunk/sim/Top_PipelinedCipher.do =================================================================== --- trunk/sim/Top_PipelinedCipher.do (nonexistent) +++ trunk/sim/Top_PipelinedCipher.do (revision 2) @@ -0,0 +1,13 @@ +vlib work +vlog ../rtl/SBox.v +vlog ../rtl/SubBytes.v +vlog ../rtl/ShiftRows.v +vlog ../rtl/MixColumns.v +vlog ../rtl/AddRoundKey.v +vlog ../rtl/Round.v +vlog ../rtl/RoundKeyGen.v +vlog ../rtl/KeyExpantion.v +vlog ../rtl/Top_PipelinedCipher.v +vlog ../sim/Top_PipelinedCipher_tb.v +vsim -novopt Top_PipelinedCipher_tb +run -a Index: trunk/sim/timesim.do =================================================================== --- trunk/sim/timesim.do (nonexistent) +++ trunk/sim/timesim.do (revision 2) @@ -0,0 +1,4 @@ +vlog Top_PipelinedCipher_tb.v +vlog ../syn/netgen/par/Top_PipelinedCipher_timesim.v +vsim +define+GATES -novopt -sdfmax /U/=../syn/netgen/par/Top_PipelinedCipher_timesim.sdf -novopt work.Top_PipelinedCipher_tb glbl +run -a \ No newline at end of file Index: trunk/sim/topcipher_test_outputs.txt =================================================================== --- trunk/sim/topcipher_test_outputs.txt (nonexistent) +++ trunk/sim/topcipher_test_outputs.txt (revision 2) @@ -0,0 +1,284 @@ +0336763e966d92595a567cc9ce537f5e +a9a1631bf4996954ebc093957b234589 +ff4f8391a6a40ca5b25d23bedd44a597 +dc43be40be0e53712f7e2bf5ca707209 +92beedab1895a94faa69b632e5cc47ce +459264f4798f6a78bacb89c15ed3d601 +08a4e2efec8a8e3312ca7460b9040bbf +6d251e6944b051e04eaa6fb4dbf78465 +6e29201190152df4ee058139def610bb +c3b44b95d9d2f25670eee9a0de099fa3 +5d9b05578fc944b3cf1ccf0e746cd581 +f7efc89d5dba578104016ce5ad659c05 +0306194f666d183624aa230a8b264ae7 +858075d536d79ccee571f7d7204b1f67 +35870c6a57e9e92314bcb8087cde72ce +6c68e9be5ec41e22c825b7c7affb4363 +f5df39990fc688f1b07224cc03e86cea +bba071bcb470f8f6586e5d3add18bc66 +43c9f7e62f5d288bb27aa40ef8fe1ea8 +3580d19cff44f1014a7c966a69059de5 +806da864dd29d48deafbe764f8202aef +a303d940ded8f0baff6f75414cac5243 +c2dabd117f8a3ecabfbb11d12194d9d0 +fff60a4740086b3b9c56195b98d91a7b +8146a08e2357f0caa30ca8c94d1a0544 +4b98e06d356deb07ebb824e5713f7be3 +7a20a53d460fc9ce0423a7a0764c6cf2 +f4a70d8af877f9b02b4c40df57d45b17 +3ad78e726c1ec02b7ebfe92b23d9ec34 +aae5939c8efdf2f04e60b9fe7117b2c2 +f031d4d74f5dcbf39daaf8ca3af6e527 +96d9fd5cc4f07441727df0f33e401a36 +30ccdb044646d7e1f3ccea3dca08b8c0 +16ae4ce5042a67ee8e177b7c587ecc82 +b6da0bb11a23855d9c5cb1b4c6412e0a +db4f1aa530967d6732ce4715eb0ee24b +a81738252621dd180a34f3455b4baa2f +77e2b508db7fd89234caf7939ee5621a +b8499c251f8442ee13f0933b688fcd19 +965135f8a81f25c9d630b17502f68e53 +8b87145a01ad1c6cede995ea3670454f +8eae3b10a0c8ca6d1d3b0fa61e56b0b2 +64b4d629810fda6bafdf08f3b0d8d2c5 +d7e5dbd3324595f8fdc7d7c571da6c2a +f3f72375264e167fca9de2c1527d9606 +8ee79dd4f401ff9b7ea945d86666c13b +dd35cea2799940b40db3f819cb94c08b +6941cb6b3e08c2b7afa581ebdd607b87 +2c20f439f6bb097b29b8bd6d99aad799 +625d01f058e565f77ae86378bd2c49b3 +c0b5fd98190ef45fbb4301438d095950 +13001ff5d99806efd25da34f56be854b +3b594c60f5c8277a5113677f94208d82 +e9c0fc1818e4aa46bd2e39d638f89e05 +f8023ee9c3fdc45a019b4e985c7e1a54 +35f40182ab4662f3023baec1ee796b57 +3aebbad7303649b4194a6945c6cc3694 +a2124bea53ec2834279bed7f7eb0f938 +b9fb4399fa4facc7309e14ec98360b0a +c26277437420c5d634f715aea81a9132 +171a0e1b2dd424f0e089af2c4c10f32f +7cadbe402d1b208fe735edce00aee7ce +43b02ff929a1485af6f5c6d6558baa0f +092faacc9bf43508bf8fa8613ca75dea +cb2bf8280f3f9742c7ed513fe802629c +215a41ee442fa992a6e323986ded3f68 +f21e99cf4f0f77cea836e11a2fe75fb1 +95e3a0ca9079e646331df8b4e70d2cd6 +4afe7f120ce7613f74fc12a01a828073 +827f000e75e2c8b9d479beed913fe678 +35830c8e7aaefe2d30310ef381cbf691 +191aa0f2c8570144f38657ea4085ebe5 +85062c2c909f15d9269b6c18ce99c4f0 +678034dc9e41b5a560ed239eeab1bc78 +c2f93a4ce5ab6d5d56f1b93cf19911c1 +1c3112bcb0c1dcc749d799743691bf82 +00c55bd75c7f9c881989d3ec1911c0d4 +ea2e6b5ef182b7dff3629abd6a12045f +22322327e01780b17397f24087f8cc6f +c9cacb5cd11692c373b2411768149ee7 +a18e3dbbca577860dab6b80da3139256 +79b61c37bf328ecca8d743265a3d425c +d2d99c6bcc1f06fda8e27e8ae3f1ccc7 +1bfd4b91c701fd6b61b7f997829d663b +11005d52f25f16bdc9545a876a63490a +3a4d354f02bb5a5e47d39666867f246a +d451b8d6e1e1a0ebb155fbbf6e7b7dc3 +6898d4f42fa7ba6a10ac05e87b9f2080 +b611295e739ca7d9b50f8e4c0e754a3f +7d33fc7d8abe3ca1936759f8f5deaf20 +3b5e0f566dc96c298f0c12637539b25c +f807c3e7985fe0f5a50e2cdb25c5109e +41f992a856fb278b389a62f5d274d7e9 +10d3ed7a6fe15ab4d91acbc7d0767ab1 +21feecd45b2e675973ac33bf0c5424fc +1480cb3955ba62d09eea668f7c708817 +66404033d6b72b609354d5496e7eb511 +1c317a220a7d700da2b1e075b00266e1 +ab3b89542233f1271bf8fd0c0f403545 +d93eae966fac46dca927d6b114fa3f9e +1bdec521316503d9d5ee65df3ea94ddf +eef456431dea8b4acf83bdae3717f75f +06f2519a2fafaa596bfef5cfa15c21b9 +251a7eac7e2fe809e4aa8d0d7012531a +3bffc16e4c49b268a20f8d96a60b4058 +e886f9281999c5bb3b3e8862e2f7c988 +563bf90d61beef39f48dd625fcef1361 +4d37c850644563c69fd0acd9a049325b +b87c921b91829ef3b13ca541ee1130a6 +2e65eb6b6ea383e109accce8326b0393 +9ca547f7439edc3e255c0f4d49aa8990 +a5e652614c9300f37816b1f9fd0c87f9 +14954f0b4697776f44494fe458d814ed +7c8d9ab6c2761723fe42f8bb506cbcf7 +db7e1932679fdd99742aab04aa0d5a80 +4c6a1c83e568cd10f27c2d73ded19c28 +90ecbe6177e674c98de412413f7ac915 +90684a2ac55fe1ec2b8ebd5622520b73 +7472f9a7988607ca79707795991035e6 +56aff089878bf3352f8df172a3ae47d8 +65c0526cbe40161b8019a2a3171abd23 +377be0be33b4e3e310b4aabda173f84f +9402e9aa6f69de6504da8d20c4fcaa2f +123c1f4af313ad8c2ce648b2e71fb6e1 +1ffc626d30203dcdb0019fb80f726cf4 +76da1fbe3a50728c50fd2e621b5ad885 +082eb8be35f442fb52668e16a591d1d6 +e656f9ecf5fe27ec3e4a73d00c282fb3 +2ca8209d63274cd9a29bb74bcd77683a +79bf5dce14bb7dd73a8e3611de7ce026 +3c849939a5d29399f344c4a0eca8a576 +ed3c0a94d59bece98835da7aa4f07ca2 +63919ed4ce10196438b6ad09d99cd795 +7678f3a833f19fea95f3c6029e2bc610 +3aa426831067d36b92be7c5f81c13c56 +9272e2d2cdd11050998c845077a30ea0 +088c4b53f5ec0ff814c19adae7f6246c +4010a5e401fdf0a0354ddbcc0d012b17 +a87a385736c0a6189bd6589bd8445a93 +545f2b83d9616dccf60fa9830e9cd287 +4b706f7f92406352394037a6d4f4688d +b7972b3941c44b90afa7b264bfba7387 +6f45732cf10881546f0fd23896d2bb60 +2e3579ca15af27f64b3c955a5bfc30ba +34a2c5a91ae2aec99b7d1b5fa6780447 +a4d6616bd04f87335b0e53351227a9ee +7f692b03945867d16179a8cefc83ea3f +3bd141ee84a0e6414a26e7a4f281f8a2 +d1788f572d98b2b16ec5d5f3922b99bc +0833ff6f61d98a57b288e8c3586b85a6 +8568261797de176bf0b43becc6285afb +f9b0fda0c4a898f5b9e6f661c4ce4d07 +8ade895913685c67c5269f8aae42983e +39bde67d5c8ed8a8b1c37eb8fa9f5ac0 +5c005e72c1418c44f569f2ea33ba54f3 +3f5b8cc9ea855a0afa7347d23e8d664e +0edd33d3c621e546455bd8ba1418bec8 +4bc3f883450c113c64ca42e1112a9e87 +72a1da770f5d7ac4c9ef94d822affd97 +970014d634e2b7650777e8e84d03ccd8 +f17e79aed0db7e279e955b5f493875a7 +9ed5a75136a940d0963da379db4af26a +c4295f83465c7755e8fa364bac6a7ea5 +b1d758256b28fd850ad4944208cf1155 +42ffb34c743de4d88ca38011c990890b +9958f0ecea8b2172c0c1995f9182c0f3 +956d7798fac20f82a8823f984d06f7f5 +a01bf44f2d16be928ca44aaf7b9b106b +b5f1a33e50d40d103764c76bd4c6b6f8 +2637050c9fc0d4817e2d69de878aee8d +113ecbe4a453269a0dd26069467fb5b5 +97d0754fe68f11b9e375d070a608c884 +c6a0b3e998d05068a5399778405200b4 +df556a33438db87bc41b1752c55e5e49 +90fb128d3a1af6e548521bb962bf1f05 +26298e9c1db517c215fadfb7d2a8d691 +a6cb761d61f8292d0df393a279ad0380 +12acd89b13cd5f8726e34d44fd486108 +95b1703fc57ba09fe0c3580febdd7ed4 +de11722d893e9f9121c381becc1da59a +6d114ccb27bf391012e8974c546d9bf2 +5ce37e17eb4646ecfac29b9cc38d9340 +18c1b6e2157122056d0243d8a165cddb +99693e6a59d1366c74d823562d7e1431 +6c7c64dc84a8bba758ed17eb025a57e3 +e17bc79f30eaab2fac2cbbe3458d687a +1114bc2028009b923f0b01915ce5e7c4 +9c28524a16a1e1c1452971caa8d13476 +ed62e16363638360fdd6ad62112794f0 +5a8688f0b2a2c16224c161658ffd4044 +23f710842b9bb9c32f26648c786807ca +44a98bf11e163f632c47ec6a49683a89 +0f18aff94274696d9b61848bd50ac5e5 +82408571c3e2424540207f833b6dda69 +303ff996947f0c7d1f43c8f3027b9b75 +7df4daf4ad29a3615a9b6ece5c99518a +c72954a48d0774db0b4971c526260415 +1df9b76112dc6531e07d2cfda04411f0 +8e4d8e699119e1fc87545a647fb1d34f +e6c4807ae11f36f091c57d9fb68548d1 +8ebf73aad49c82007f77a5c1ccec6ab4 +4fb288cc2040049001d2c7585ad123fc +04497110efb9dceb13e2b13fb4465564 +75550e6cb5a88e49634c9ab69eda0430 +b6768473ce9843ea66a81405dd50b345 +cb2f430383f9084e03a653571e065de6 +ff4e66c07bae3e79fb7d210847a3b0ba +7b90785125505fad59b13c186dd66ce3 +8b527a6aebdaec9eaef8eda2cb7783e5 +43fdaf53ebbc9880c228617d6a9b548b +53786104b9744b98f052c46f1c850d0b +b5ab3013dd1e61df06cbaf34ca2aee78 +7470469be9723030fdcc73a8cd4fbb10 +a35a63f5343ebe9ef8167bcb48ad122e +fd8687f0757a210e9fdf181204c30863 +7a181e84bd5457d26a88fbae96018fb0 +653317b9362b6f9b9e1a580e68d494b5 +995c9dc0b689f03c45867b5faa5c18d1 +77a4d96d56dda398b9aabecfc75729fd +84be19e053635f09f2665e7bae85b42d +32cd652842926aea4aa6137bb2be2b5e +493d4a4f38ebb337d10aa84e9171a554 +d9bff7ff454b0ec5a4a2a69566e2cb84 +3535d565ace3f31eb249ba2cc6765d7a +f60e91fc3269eecf3231c6e9945697c6 +ab69cfadf51f8e604d9cc37182f6635a +7866373f24a0b6ed56e0d96fcdafb877 +1ea448c2aac954f5d812e9d78494446a +acc5599dd8ac02239a0fef4a36dd1668 +d8764468bb103828cf7e1473ce895073 +1b0d02893683b9f180458e4aa6b73982 +96d9b017d302df410a937dcdb8bb6e43 +ef1623cc44313cff440b1594a7e21cc6 +284ca2fa35807b8b0ae4d19e11d7dbd7 +f2e976875755f9401d54f36e2a23a594 +ec198a18e10e532403b7e20887c8dd80 +545d50ebd919e4a6949d96ad47e46a80 +dbdfb527060e0a71009c7bb0c68f1d44 +9cfa1322ea33da2173a024f2ff0d896d +8785b1a75b0f3bd958dcd0e29318c521 +38f67b9e98e4a97b6df030a9fcdd0104 +192afffb2c880e82b05926d0fc6c448b +6a7980ce7b105cf530952d74daaf798c +ea3695e1351b9d6858bd958cf513ef6c +6da0490ba0ba0343b935681d2cce5ba1 +f0ea23af08534011c60009ab29ada2f1 +ff13806cf19cc38721554d7c0fcdcd4b +6838af1f4f69bae9d85dd188dcdf0688 +36cf44c92d550bfb1ed28ef583ddf5d7 +d06e3195b5376f109d5c4ec6c5d62ced +c440de014d3d610707279b13242a5c36 +f0c5c6ffa5e0bd3a94c88f6b6f7c16b9 +3e40c3901cd7effc22bffc35dee0b4d9 +b63305c72bedfab97382c406d0c49bc6 +36bbaab22a6bd4925a99a2b408d2dbae +307c5b8fcd0533ab98bc51e27a6ce461 +829c04ff4c07513c0b3ef05c03e337b5 +f17af0e895dda5eb98efc68066e84c54 +277167f3812afff1ffacb4a934379fc3 +2cb1dc3a9c72972e425ae2ef3eb597cd +36aeaa3a213e968d4b5b679d3a2c97fe +9241daca4fdd034a82372db50e1a0f3f +c14574d9cd00cf2b5a7f77e53cd57885 +793de39236570aba83ab9b737cb521c9 +16591c0f27d60e29b85a96c33861a7ef +44fb5c4d4f5cb79be5c174a3b1c97348 +674d2b61633d162be59dde04222f4740 +b4750ff263a65e1f9e924ccfd98f3e37 +62d0662d6eaeddedebae7f7ea3a4f6b6 +70c46bb30692be657f7eaa93ebad9897 +323994cfb9da285a5d9642e1759b224a +1dbf57877b7b17385c85d0b54851e371 +dfa5c097cdc1532ac071d57b1d28d1bd +3a0c53fa37311fc10bd2a9981f513174 +ba4f970c0a25c41814bdae2e506be3b4 +2dce3acb727cd13ccd76d425ea56e4f6 +5160474d504b9b3eefb68d35f245f4b3 +41a8a947766635dec37553d9a6c0cbb7 +25d6cfe6881f2bf497dd14cd4ddf445b +41c78c135ed9e98c096640647265da1e +5a4d404d8917e353e92a21072c3b2305 +02bc96846b3fdc71643f384cd3cc3eaf +9ba4a9143f4e5d4048521c4f8877d88e +a1f6258c877d5fcd8964484538bfc92c \ No newline at end of file Index: trunk/syn/setup.tcl =================================================================== --- trunk/syn/setup.tcl (nonexistent) +++ trunk/syn/setup.tcl (revision 2) @@ -0,0 +1,493 @@ +# +# Project automation script for AES +# +# Created for ISE version 12.1 +# +# This file contains several Tcl procedures (procs) that you can use to automate +# your project by running from xtclsh or the Project Navigator Tcl console. +# If you load this file (using the Tcl command: source AES.tcl), then you can +# run any of the procs included here. +# +# This script is generated assuming your project has HDL sources. +# Several of the defined procs won't apply to an EDIF or NGC based project. +# If that is the case, simply remove them from this script. +# +# You may also edit any of these procs to customize them. See comments in each +# proc for more instructions. +# +# This file contains the following procedures: +# +# Top Level procs (meant to be called directly by the user): +# run_process: you can use this top-level procedure to run any processes +# that you choose to by adding and removing comments, or by +# adding new entries. +# rebuild_project: you can alternatively use this top-level procedure +# to recreate your entire project, and the run selected processes. +# +# Lower Level (helper) procs (called under in various cases by the top level procs): +# show_help: print some basic information describing how this script works +# add_source_files: adds the listed source files to your project. +# set_project_props: sets the project properties that were in effect when this +# script was generated. +# create_libraries: creates and adds file to VHDL libraries that were defined when +# this script was generated. +# set_process_props: set the process properties as they were set for your project +# when this script was generated. +# + +set myProject "AES" +set myScript "setup.tcl" + +# +# Main (top-level) routines +# + +# +# run_process +# This procedure is used to run processes on an existing project. You may comment or +# uncomment lines to control which processes are run. This routine is set up to run +# the Implement Design and Generate Programming File processes by default. This proc +# also sets process properties as specified in the "set_process_props" proc. Only +# those properties which have values different from their current settings in the project +# file will be modified in the project. +# +proc run_process {} { + + global myScript + global myProject + + ## put out a 'heartbeat' - so we know something's happening. + puts "\n$myScript: running ($myProject)...\n" + + if { ! [ open_project ] } { + return false + } + + set_process_props + # + # Remove the comment characters (#'s) to enable the following commands + process run "Synthesize" + process run "Translate" + process run "Map" + process run "Place & Route" + process run "Generate Post-Place & Route Simulation Model" + # + puts "Running 'Implement Design'" + if { ! [ process run "Implement Design" ] } { + puts "$myScript: Implementation run failed, check run output for details." + project close + return + } + puts "Running 'Generate Programming File'" + if { ! [ process run "Generate Programming File" ] } { + puts "$myScript: Generate Programming File run failed, check run output for details." + project close + return + } + + puts "Run completed." + project close + +} + +# +# rebuild_project +# +# This procedure renames the project file (if it exists) and recreates the project. +# It then sets project properties and adds project sources as specified by the +# set_project_props and add_source_files support procs. It recreates VHDL libraries +# and partitions as they existed at the time this script was generated. +# +# It then calls run_process to set process properties and run selected processes. +# +proc rebuild_project {} { + + global myScript + global myProject + + project close + ## put out a 'heartbeat' - so we know something's happening. + puts "\n$myScript: Rebuilding ($myProject)...\n" + + set proj_exts [ list ise xise gise ] + foreach ext $proj_exts { + set proj_name "${myProject}.$ext" + if { [ file exists $proj_name ] } { + file delete $proj_name + } + } + + project new $myProject + set_project_props + add_source_files + create_libraries + puts "$myScript: project rebuild completed." + + run_process + +} + +# +# Support Routines +# + +# +# show_help: print information to help users understand the options available when +# running this script. +# +proc show_help {} { + + global myScript + + puts "" + puts "usage: xtclsh $myScript " + puts " or you can run xtclsh and then enter 'source $myScript'." + puts "" + puts "options:" + puts " run_process - set properties and run processes." + puts " rebuild_project - rebuild the project from scratch and run processes." + puts " set_project_props - set project properties (device, speed, etc.)" + puts " add_source_files - add source files" + puts " create_libraries - create vhdl libraries" + puts " set_process_props - set process property values" + puts " show_help - print this message" + puts "" +} + +proc open_project {} { + + global myScript + global myProject + + if { ! [ file exists ${myProject}.xise ] } { + ## project file isn't there, rebuild it. + puts "Project $myProject not found. Use project_rebuild to recreate it." + return false + } + + project open $myProject + + return true + +} +# +# set_project_props +# +# This procedure sets the project properties as they were set in the project +# at the time this script was generated. +# +proc set_project_props {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Setting project properties..." + + project set family "Virtex6" + project set device "xc6vcx240t" + project set package "ff784" + project set speed "-2" + project set top_level_module_type "HDL" + project set synthesis_tool "XST (VHDL/Verilog)" + project set simulator "Modelsim-SE Verilog" + project set "Preferred Language" "Verilog" + project set "Enable Message Filtering" "false" + +} + + +# +# add_source_files +# +# This procedure add the source files that were known to the project at the +# time this script was generated. +# +proc add_source_files {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Adding sources to project..." + + xfile add "../rtl/AddRoundKey.v" + xfile add "../rtl/KeyExpantion.v" + xfile add "../rtl/MixColumns.v" + xfile add "../rtl/Round.v" + xfile add "../rtl/RoundKeyGen.v" + xfile add "../rtl/SBox.v" + xfile add "../rtl/ShiftRows.v" + xfile add "../rtl/SubBytes.v" + xfile add "../rtl/Top_PipelinedCipher.v" + xfile add "./Top_PipelinedCipher.ucf" + + # Set the Top Module as well... + project set top "Top_PipelinedCipher" + + puts "$myScript: project sources reloaded." + +} ; # end add_source_files + +# +# create_libraries +# +# This procedure defines VHDL libraries and associates files with those libraries. +# It is expected to be used when recreating the project. Any libraries defined +# when this script was generated are recreated by this procedure. +# +proc create_libraries {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Creating libraries..." + + + # must close the project or library definitions aren't saved. + project save + +} ; # end create_libraries + +# +# set_process_props +# +# This procedure sets properties as requested during script generation (either +# all of the properties, or only those modified from their defaults). +# +proc set_process_props {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: setting process properties..." + + project set "Compiled Library Directory" "\$XILINX//" + project set "Global Optimization" "Off" -process "Map" + project set "Use DSP Block" "Auto" -process "Synthesize - XST" + project set "Enable Cyclic Redundancy Checking (CRC)" "true" -process "Generate Programming File" + project set "Configuration Rate" "2" -process "Generate Programming File" + project set "Pack I/O Registers/Latches into IOBs" "Off" -process "Map" + project set "Place And Route Mode" "Route Only" -process "Place & Route" + project set "Number of Clock Buffers" "32" -process "Synthesize - XST" + project set "Max Fanout" "100000" -process "Synthesize - XST" + project set "Use Clock Enable" "Auto" -process "Synthesize - XST" + project set "Use Synchronous Reset" "Auto" -process "Synthesize - XST" + project set "Use Synchronous Set" "Auto" -process "Synthesize - XST" + project set "Enable Hardware Co-Simulation" "false" + project set "Filter Files From Compile Order" "true" + #project set "Use Custom Project File" "false" -process "Post-Map Check Syntax" + #project set "Use Custom Project File" "false" -process "Post-Place & Route Check Syntax" + #project set "Use Custom Project File" "false" -process "Post-Translate Check Syntax" + project set "Last Applied Goal" "Balanced" + project set "Last Applied Strategy" "Xilinx Default (unlocked)" + project set "Last Unlock Status" "false" + project set "Manual Compile Order" "false" + project set "Placer Effort Level" "High" -process "Map" + project set "Extra Cost Tables" "0" -process "Map" + project set "LUT Combining" "Off" -process "Map" + project set "Combinatorial Logic Optimization" "false" -process "Map" + project set "Starting Placer Cost Table (1-100)" "1" -process "Map" + project set "Power Reduction" "Off" -process "Map" + project set "Register Duplication" "Off" -process "Map" + project set "Project Generator" "ProjNav" + project set "Property Specification in Project File" "Store all values" + project set "Reduce Control Sets" "Auto" -process "Synthesize - XST" + project set "Selected Module Instance Name" "/Top_PipelinedCipher_tb" + project set "Shift Register Minimum Size" "2" -process "Synthesize - XST" + project set "Case Implementation Style" "None" -process "Synthesize - XST" + project set "Mux Extraction" "Yes" + project set "RAM Extraction" "true" -process "Synthesize - XST" + project set "ROM Extraction" "true" -process "Synthesize - XST" + project set "FSM Encoding Algorithm" "Auto" -process "Synthesize - XST" + project set "Optimization Goal" "Speed" -process "Synthesize - XST" + project set "Optimization Effort" "Normal" -process "Synthesize - XST" + project set "Resource Sharing" "true" -process "Synthesize - XST" + project set "Shift Register Extraction" "true" -process "Synthesize - XST" + project set "User Browsed Strategy Files" "" + project set "VHDL Source Analysis Standard" "VHDL-93" + project set "Working Directory" "." + project set "JTAG to System Monitor Connection" "Enable" -process "Generate Programming File" + project set "Other Bitgen Command Line Options" "" -process "Generate Programming File" + project set "Generate Detailed Package Parasitics" "false" -process "Generate IBIS Model" + project set "Maximum Signal Name Length" "20" -process "Generate IBIS Model" + project set "Show All Models" "false" -process "Generate IBIS Model" + project set "Target UCF File Name" "" -process "Back-annotate Pin Locations" + project set "Ignore User Timing Constraints" "false" -process "Map" + project set "Use RLOC Constraints" "Yes" -process "Map" + project set "Other Map Command Line Options" "" -process "Map" + project set "Use LOC Constraints" "true" -process "Translate" + project set "Other Ngdbuild Command Line Options" "" -process "Translate" + project set "Ignore User Timing Constraints" "false" -process "Place & Route" + project set "Other Place & Route Command Line Options" "" -process "Place & Route" + project set "BPI Reads Per Page" "1" -process "Generate Programming File" + project set "Configuration Pin Busy" "Pull Up" -process "Generate Programming File" + project set "Configuration Clk (Configuration Pins)" "Pull Up" -process "Generate Programming File" + project set "UserID Code (8 Digit Hexadecimal)" "0xFFFFFFFF" -process "Generate Programming File" + project set "Configuration Pin CS" "Pull Up" -process "Generate Programming File" + project set "DCI Update Mode" "As Required" -process "Generate Programming File" + project set "Configuration Pin DIn" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Done" "Pull Up" -process "Generate Programming File" + project set "Create ASCII Configuration File" "false" -process "Generate Programming File" + project set "Create Binary Configuration File" "false" -process "Generate Programming File" + project set "Create Bit File" "true" -process "Generate Programming File" + project set "Enable BitStream Compression" "false" -process "Generate Programming File" + project set "Run Design Rules Checker (DRC)" "true" -process "Generate Programming File" + project set "Create IEEE 1532 Configuration File" "false" -process "Generate Programming File" + project set "Create ReadBack Data Files" "false" -process "Generate Programming File" + project set "Configuration Pin HSWAPEN" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Init" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M0" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M1" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M2" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Program" "Pull Up" -process "Generate Programming File" + project set "Power Down Device if Over Safe Temperature" "false" -process "Generate Programming File" + project set "Configuration Pin RdWr" "Pull Up" -process "Generate Programming File" + project set "Starting Address for Fallback Configuration" "0x00000000" -process "Generate Programming File" + project set "JTAG Pin TCK" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TDI" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TDO" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TMS" "Pull Up" -process "Generate Programming File" + project set "Unused IOB Pins" "Pull Down" -process "Generate Programming File" + project set "Watchdog Timer Mode" "Off" -process "Generate Programming File" + project set "Security" "Enable Readback and Reconfiguration" -process "Generate Programming File" + project set "Done (Output Events)" "Default (4)" -process "Generate Programming File" + project set "Drive Done Pin High" "false" -process "Generate Programming File" + project set "Enable Outputs (Output Events)" "Default (5)" -process "Generate Programming File" + project set "Wait for DCI Match (Output Events)" "Auto" -process "Generate Programming File" + project set "Wait for PLL Lock (Output Events)" "No Wait" -process "Generate Programming File" + project set "Release Write Enable (Output Events)" "Default (6)" -process "Generate Programming File" + project set "FPGA Start-Up Clock" "CCLK" -process "Generate Programming File" + project set "Enable Internal Done Pipe" "false" -process "Generate Programming File" + project set "Allow Logic Optimization Across Hierarchy" "false" -process "Map" + project set "Maximum Compression" "false" -process "Map" + project set "Generate Detailed MAP Report" "false" -process "Map" + project set "Map Slice Logic into Unused Block RAMs" "false" -process "Map" + project set "Perform Timing-Driven Packing and Placement" "false" + project set "Trim Unconnected Signals" "true" -process "Map" + project set "Create I/O Pads from Ports" "false" -process "Translate" + project set "Macro Search Path" "" -process "Translate" + project set "Netlist Translation Type" "Timestamp" -process "Translate" + project set "User Rules File for Netlister Launcher" "" -process "Translate" + project set "Allow Unexpanded Blocks" "false" -process "Translate" + project set "Allow Unmatched LOC Constraints" "false" -process "Translate" + project set "Allow Unmatched Timing Group Constraints" "false" -process "Translate" + project set "Add I/O Buffers" "true" -process "Synthesize - XST" + project set "Global Optimization Goal" "AllClockNets" -process "Synthesize - XST" + project set "Keep Hierarchy" "No" -process "Synthesize - XST" + project set "Register Balancing" "No" -process "Synthesize - XST" + project set "Register Duplication" "true" -process "Synthesize - XST" + project set "Asynchronous To Synchronous" "false" -process "Synthesize - XST" + project set "Automatic BRAM Packing" "false" -process "Synthesize - XST" + project set "BRAM Utilization Ratio" "100" -process "Synthesize - XST" + project set "Bus Delimiter" "<>" -process "Synthesize - XST" + project set "Case" "Maintain" -process "Synthesize - XST" + project set "Cores Search Directories" "" -process "Synthesize - XST" + project set "Cross Clock Analysis" "false" -process "Synthesize - XST" + project set "DSP Utilization Ratio" "100" -process "Synthesize - XST" + project set "Equivalent Register Removal" "true" -process "Synthesize - XST" + project set "FSM Style" "LUT" -process "Synthesize - XST" + project set "Generate RTL Schematic" "Yes" -process "Synthesize - XST" + project set "Generics, Parameters" "" -process "Synthesize - XST" + project set "Hierarchy Separator" "/" -process "Synthesize - XST" + project set "HDL INI File" "" -process "Synthesize - XST" + project set "LUT Combining" "Auto" -process "Synthesize - XST" + project set "Library Search Order" "" -process "Synthesize - XST" + project set "Netlist Hierarchy" "As Optimized" -process "Synthesize - XST" + project set "Optimize Instantiated Primitives" "false" -process "Synthesize - XST" + project set "Pack I/O Registers into IOBs" "Auto" -process "Synthesize - XST" + project set "Power Reduction" "false" -process "Synthesize - XST" + project set "Read Cores" "true" -process "Synthesize - XST" + project set "LUT-FF Pairs Utilization Ratio" "100" -process "Synthesize - XST" + project set "Use Synthesis Constraints File" "true" -process "Synthesize - XST" + project set "Verilog Include Directories" "" -process "Synthesize - XST" + project set "Verilog 2001" "true" + project set "Verilog Macros" "" -process "Synthesize - XST" + project set "Write Timing Constraints" "false" -process "Synthesize - XST" + project set "Other XST Command Line Options" "" -process "Synthesize - XST" + project set "Timing Mode" "Performance Evaluation" -process "Map" + project set "Generate Asynchronous Delay Report" "false" -process "Place & Route" + project set "Generate Clock Region Report" "false" -process "Place & Route" + project set "Generate Post-Place & Route Power Report" "false" -process "Place & Route" + project set "Generate Post-Place & Route Simulation Model" "false" -process "Place & Route" + project set "Power Reduction" "false" -process "Place & Route" + project set "Place & Route Effort Level (Overall)" "High" -process "Place & Route" + project set "Auto Implementation Compile Order" "true" + project set "Auto Implementation Top" "false" + project set "Equivalent Register Removal" "true" -process "Map" + project set "Placer Extra Effort" "None" -process "Map" + project set "Power Activity File" "" -process "Map" + project set "Retiming" "false" -process "Map" + project set "Synthesis Constraints File" "" -process "Synthesize - XST" + project set "RAM Style" "Auto" -process "Synthesize - XST" + project set "Verbose Property Persistence" "true" + project set "Encrypt Bitstream" "false" -process "Generate Programming File" + project set "Output File Name" "Top_PipelinedCipher" -process "Generate IBIS Model" + project set "Enable Multi-Threading" "Off" -process "Place & Route" + project set "Timing Mode" "Performance Evaluation" -process "Place & Route" + project set "Cycles for First BPI Page Read" "1" -process "Generate Programming File" + project set "Enable Debugging of Serial Mode BitStream" "false" -process "Generate Programming File" + project set "Create Logic Allocation File" "false" -process "Generate Programming File" + project set "Create Mask File" "false" -process "Generate Programming File" + project set "Watchdog Timer Value" "0x000000" -process "Generate Programming File" + project set "Allow SelectMAP Pins to Persist" "false" -process "Generate Programming File" + project set "Enable Multi-Threading" "Off" -process "Map" + project set "Move First Flip-Flop Stage" "true" -process "Synthesize - XST" + project set "Move Last Flip-Flop Stage" "true" -process "Synthesize - XST" + project set "ROM Style" "Auto" -process "Synthesize - XST" + project set "Safe Implementation" "No" -process "Synthesize - XST" + project set "AES Initial Vector" "" -process "Generate Programming File" + project set "Power Activity File" "" -process "Place & Route" + project set "Extra Effort (Highest PAR level only)" "None" -process "Place & Route" + project set "HMAC Key (Hex String)" "" -process "Generate Programming File" + project set "Encrypt Key Select" "BBRAM" -process "Generate Programming File" + project set "AES Key (Hex String)" "" -process "Generate Programming File" + project set "Input Encryption Key File" "" -process "Generate Programming File" + project set "Fallback Reconfiguration" "Enable" -process "Generate Programming File" + project set "Automatically Insert glbl Module in the Netlist" "true" -process "Generate Post-Place & Route Simulation Model" + project set "Include SIMPRIM Models in Verilog File" "true" -process "Generate Post-Place & Route Simulation Model" + project set "Include sdf_annotate task in Verilog File" "false" -process "Generate Post-Place & Route Simulation Model" + + puts "$myScript: project property values set." + +} ; # end set_process_props + +proc main {} { + + if { [llength $::argv] == 0 } { + show_help + return true + } + + foreach option $::argv { + switch $option { + "show_help" { show_help } + "run_process" { run_process } + "rebuild_project" { rebuild_project } + "set_project_props" { set_project_props } + "add_source_files" { add_source_files } + "create_libraries" { create_libraries } + "set_process_props" { set_process_props } + default { puts "unrecognized option: $option"; show_help } + } + } +} + +if { $tcl_interactive } { + show_help +} else { + if {[catch {main} result]} { + puts "$myScript failed: $result." + } +} + Index: trunk/syn/Top_PipelinedCipher.ucf =================================================================== --- trunk/syn/Top_PipelinedCipher.ucf (nonexistent) +++ trunk/syn/Top_PipelinedCipher.ucf (revision 2) @@ -0,0 +1,4 @@ + +#Created by Constraints Editor (xc6vcx240t-ff784-2) - 2013/06/28 +NET "clk" TNM_NET = clk; +TIMESPEC TS_clk = PERIOD "clk" 5 ns HIGH 50%; Index: trunk/syn/run.tcl =================================================================== --- trunk/syn/run.tcl (nonexistent) +++ trunk/syn/run.tcl (revision 2) @@ -0,0 +1,5 @@ +#put here your project directory +set project_directory . +cd $project_directory +source setup.tcl +rebuild_project \ No newline at end of file Index: trunk/syn/readme.txt =================================================================== --- trunk/syn/readme.txt (nonexistent) +++ trunk/syn/readme.txt (revision 2) @@ -0,0 +1,8 @@ +1-edit run.tcl and replace . with your project directory (that contains tcl files) + +2-edit setup.tcl at line 218 begin to add your files as shown +3-edit setup.tcl at line 230 set your top module + +4-open xilinx bash shell and point to the directory that contains tcl files then write xtclsh +5-write the command: source run.tcl +6-after running all processes the sdf file and the verilog netlist can be found in netgen folder Index: trunk/reports/Top_PipelinedCipher_map.mrp =================================================================== --- trunk/reports/Top_PipelinedCipher_map.mrp (nonexistent) +++ trunk/reports/Top_PipelinedCipher_map.mrp (revision 2) @@ -0,0 +1,581 @@ +Release 12.1 Map M.53d (nt64) +Xilinx Mapping Report File for Design 'Top_PipelinedCipher' + +Design Information +------------------ +Command Line : map -intstyle ise -p xc6vcx240t-ff784-2 -w -ol high -t 1 -xt 0 +-register_duplication off -global_opt off -ir off -pr off -lc off -power off -o +Top_PipelinedCipher_map.ncd Top_PipelinedCipher.ngd Top_PipelinedCipher.pcf +Target Device : xc6vcx240t +Target Package : ff784 +Target Speed : -2 +Mapper Version : virtex6 -- $Revision: 1.52 $ +Mapped Date : Wed Jul 17 15:14:08 2013 + +Design Summary +-------------- +Number of errors: 0 +Number of warnings: 0 +Slice Logic Utilization: + Number of Slice Registers: 10,769 out of 301,440 3% + Number used as Flip Flops: 10,769 + Number used as Latches: 0 + Number used as Latch-thrus: 0 + Number used as AND/OR logics: 0 + Number of Slice LUTs: 12,475 out of 150,720 8% + Number used as logic: 9,842 out of 150,720 6% + Number using O6 output only: 9,081 + Number using O5 output only: 0 + Number using O5 and O6: 761 + Number used as ROM: 0 + Number used as Memory: 0 out of 58,400 0% + Number used exclusively as route-thrus: 2,633 + Number with same-slice register load: 2,633 + Number with same-slice carry load: 0 + Number with other load: 0 + +Slice Logic Distribution: + Number of occupied Slices: 3,214 out of 37,680 8% + Number of LUT Flip Flop pairs used: 12,527 + Number with an unused Flip Flop: 5,031 out of 12,527 40% + Number with an unused LUT: 52 out of 12,527 1% + Number of fully used LUT-FF pairs: 7,444 out of 12,527 59% + Number of unique control sets: 82 + Number of slice register sites lost + to control set restrictions: 7 out of 301,440 1% + + A LUT Flip Flop pair for this architecture represents one LUT paired with + one Flip Flop within a slice. A control set is a unique combination of + clock, reset, set, and enable signals for a registered element. + The Slice Logic Distribution report is not meaningful if the design is + over-mapped for a non-slice resource or if Placement fails. + OVERMAPPING of BRAM resources should be ignored if the design is + over-mapped for a non-BRAM resource or if placement fails. + +IO Utilization: + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of RAMB36E1/FIFO36E1s: 0 out of 416 0% + Number of RAMB18E1/FIFO18E1s: 0 out of 832 0% + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + Number used as BUFGs: 2 + Number used as BUFGCTRLs: 0 + Number of ILOGICE1/ISERDESE1s: 0 out of 720 0% + Number of OLOGICE1/OSERDESE1s: 0 out of 720 0% + Number of BSCANs: 0 out of 4 0% + Number of BUFHCEs: 0 out of 144 0% + Number of BUFOs: 0 out of 36 0% + Number of BUFIODQSs: 0 out of 72 0% + Number of BUFRs: 0 out of 36 0% + Number of CAPTUREs: 0 out of 1 0% + Number of DSP48E1s: 0 out of 768 0% + Number of EFUSE_USRs: 0 out of 1 0% + Number of GTXE1s: 0 out of 12 0% + Number of IBUFDS_GTXE1s: 0 out of 8 0% + Number of ICAPs: 0 out of 2 0% + Number of IDELAYCTRLs: 0 out of 18 0% + Number of IODELAYE1s: 0 out of 720 0% + Number of MMCM_ADVs: 0 out of 12 0% + Number of PCIE_2_0s: 0 out of 2 0% + Number of STARTUPs: 1 out of 1 100% + Number of SYSMONs: 0 out of 1 0% + Number of TEMAC_SINGLEs: 0 out of 1 0% + +Average Fanout of Non-Clock Nets: 7.45 + +Peak Memory Usage: 1019 MB +Total REAL time to MAP completion: 3 mins 28 secs +Total CPU time to MAP completion: 3 mins 19 secs + +Table of Contents +----------------- +Section 1 - Errors +Section 2 - Warnings +Section 3 - Informational +Section 4 - Removed Logic Summary +Section 5 - Removed Logic +Section 6 - IOB Properties +Section 7 - RPMs +Section 8 - Guide Report +Section 9 - Area Group and Partition Summary +Section 10 - Timing Report +Section 11 - Configuration String Information +Section 12 - Control Set Information +Section 13 - Utilization by Hierarchy + +Section 1 - Errors +------------------ + +Section 2 - Warnings +-------------------- +WARNING:Security:42 - Your software subscription period has lapsed. Your current +version of Xilinx tools will continue to function, but you no longer qualify for +Xilinx software updates or new releases. + +Section 3 - Informational +------------------------- +INFO:Security:56 - Part 'xc6vcx240t' is not a WebPack part. +INFO:MapLib:562 - No environment variables are currently set. +INFO:LIT:244 - All of the single ended outputs in this design are using slew + rate limited output drivers. The delay on speed critical single ended outputs + can be dramatically reduced by designating them as fast outputs. +INFO:Pack:1716 - Initializing temperature to 85.000 Celsius. (default - Range: + 0.000 to 85.000 Celsius) +INFO:Pack:1720 - Initializing voltage to 0.950 Volts. (default - Range: 0.950 to + 1.050 Volts) +INFO:Map:215 - The Interim Design Summary has been generated in the MAP Report + (.mrp). +INFO:Pack:1650 - Map created a placed design. + +Section 4 - Removed Logic Summary +--------------------------------- + +Section 5 - Removed Logic +------------------------- + +Section 6 - IOB Properties +-------------------------- + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +| IOB Name | Type | Direction | IO Standard | Diff | Drive | Slew | Reg (s) | Resistor | IOB | +| | | | | Term | Strength | Rate | | | Delay | ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +| cipher_key<0> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<1> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<2> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<3> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<4> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<5> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<6> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<7> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<8> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<9> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<10> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<11> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<12> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<13> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<14> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<15> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<16> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<17> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<18> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<19> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<20> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<21> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<22> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<23> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<24> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<25> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<26> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<27> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<28> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<29> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<30> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<31> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<32> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<33> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<34> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<35> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<36> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<37> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<38> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<39> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<40> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<41> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<42> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<43> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<44> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<45> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<46> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<47> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<48> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<49> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<50> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<51> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<52> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<53> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<54> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<55> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<56> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<57> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<58> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<59> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<60> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<61> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<62> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<63> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<64> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<65> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<66> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<67> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<68> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<69> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<70> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<71> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<72> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<73> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<74> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<75> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<76> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<77> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<78> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<79> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<80> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<81> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<82> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<83> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<84> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<85> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<86> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<87> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<88> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<89> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<90> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<91> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<92> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<93> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<94> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<95> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<96> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<97> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<98> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<99> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<100> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<101> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<102> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<103> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<104> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<105> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<106> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<107> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<108> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<109> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<110> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<111> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<112> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<113> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<114> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<115> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<116> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<117> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<118> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<119> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<120> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<121> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<122> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<123> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<124> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<125> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<126> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<127> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_text<0> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<3> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<4> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<5> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<6> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<7> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<8> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<9> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<10> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<11> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<12> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<13> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<14> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<15> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<16> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<17> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<18> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<19> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<20> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<21> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<22> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<23> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<24> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<25> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<26> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<27> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<28> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<29> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<30> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<31> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<32> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<33> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<34> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<35> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<36> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<37> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<38> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<39> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<40> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<41> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<42> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<43> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<44> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<45> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<46> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<47> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<48> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<49> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<50> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<51> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<52> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<53> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<54> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<55> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<56> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<57> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<58> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<59> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<60> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<61> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<62> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<63> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<64> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<65> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<66> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<67> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<68> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<69> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<70> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<71> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<72> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<73> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<74> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<75> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<76> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<77> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<78> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<79> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<80> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<81> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<82> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<83> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<84> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<85> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<86> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<87> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<88> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<89> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<90> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<91> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<92> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<93> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<94> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<95> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<96> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<97> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<98> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<99> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<100> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<101> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<102> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<103> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<104> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<105> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<106> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<107> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<108> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<109> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<110> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<111> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<112> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<113> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<114> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<115> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<116> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<117> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<118> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<119> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<120> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<121> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<122> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<123> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<124> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<125> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<126> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<127> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipherkey_valid_in | IOB | INPUT | LVCMOS25 | | | | | | | +| clk | IOB | INPUT | LVCMOS25 | | | | | | | +| data_valid_in | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<0> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<1> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<2> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<3> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<4> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<5> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<6> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<7> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<8> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<9> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<10> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<11> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<12> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<13> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<14> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<15> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<16> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<17> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<18> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<19> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<20> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<21> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<22> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<23> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<24> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<25> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<26> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<27> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<28> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<29> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<30> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<31> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<32> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<33> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<34> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<35> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<36> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<37> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<38> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<39> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<40> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<41> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<42> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<43> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<44> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<45> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<46> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<47> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<48> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<49> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<50> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<51> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<52> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<53> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<54> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<55> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<56> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<57> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<58> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<59> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<60> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<61> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<62> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<63> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<64> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<65> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<66> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<67> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<68> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<69> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<70> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<71> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<72> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<73> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<74> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<75> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<76> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<77> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<78> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<79> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<80> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<81> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<82> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<83> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<84> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<85> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<86> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<87> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<88> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<89> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<90> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<91> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<92> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<93> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<94> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<95> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<96> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<97> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<98> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<99> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<100> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<101> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<102> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<103> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<104> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<105> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<106> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<107> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<108> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<109> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<110> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<111> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<112> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<113> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<114> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<115> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<116> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<117> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<118> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<119> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<120> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<121> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<122> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<123> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<124> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<125> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<126> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<127> | IOB | INPUT | LVCMOS25 | | | | | | | +| reset | IOB | INPUT | LVCMOS25 | | | | | | | +| valid_out | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Section 7 - RPMs +---------------- + +Section 8 - Guide Report +------------------------ +Guide not run on this design. + +Section 9 - Area Group and Partition Summary +-------------------------------------------- + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +Area Group Information +---------------------- + + No area groups were found in this design. + +---------------------- + +Section 10 - Timing Report +-------------------------- +A logic-level (pre-route) timing report can be generated by using Xilinx static +timing analysis tools, Timing Analyzer (GUI) or TRCE (command line), with the +mapped NCD and PCF files. Please note that this timing report will be generated +using estimated delay information. For accurate numbers, please generate a +timing report with the post Place and Route NCD file. + +For more information about the Timing Analyzer, consult the Xilinx Timing +Analyzer Reference Manual; for more information about TRCE, consult the Xilinx +Command Line Tools User Guide "TRACE" chapter. + +Section 11 - Configuration String Details +----------------------------------------- +Use the "-detail" map option to print out Configuration Strings + +Section 12 - Control Set Information +------------------------------------ +Use the "-detail" map option to print out Control Set Information. + +Section 13 - Utilization by Hierarchy +------------------------------------- +Use the "-detail" map option to print out the Utilization by Hierarchy section. Index: trunk/reports/Top_PipelinedCipher.twr =================================================================== --- trunk/reports/Top_PipelinedCipher.twr (nonexistent) +++ trunk/reports/Top_PipelinedCipher.twr (revision 2) @@ -0,0 +1,291 @@ +-------------------------------------------------------------------------------- +Release 12.1 Trace (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. + +E:\ISE12\ISE_DS\ISE\bin\nt64\unwrapped\trce.exe -intstyle ise -v 3 -s 2 -n 3 +-fastpaths -xml Top_PipelinedCipher.twx Top_PipelinedCipher.ncd -o +Top_PipelinedCipher.twr Top_PipelinedCipher.pcf -ucf Top_PipelinedCipher.ucf + +Design file: Top_PipelinedCipher.ncd +Physical constraint file: Top_PipelinedCipher.pcf +Device,package,speed: xc6vcx240t,ff784,C,-2 (PRELIMINARY 1.04 2010-04-09) +Report level: verbose report + +Environment Variable Effect +-------------------- ------ +NONE No environment variables were set +-------------------------------------------------------------------------------- + +INFO:Timing:2752 - To get complete path coverage, use the unconstrained paths + option. All paths that are not constrained will be reported in the + unconstrained paths section(s) of the report. +INFO:Timing:3339 - The clock-to-out numbers in this timing report are based on + a 50 Ohm transmission line loading model. For the details of this model, + and for more information on accounting for different loading conditions, + please see the device datasheet. + +================================================================================ +Timing constraint: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; + + 75065 paths analyzed, 74633 endpoints analyzed, 0 failing endpoints + 0 timing errors detected. (0 setup errors, 0 hold errors, 0 component switching limit errors) + Minimum period is 4.952ns. +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 (SLICE_X40Y71.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.048ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 (FF) + Requirement: 5.000ns + Data Path Delay: 4.893ns (Levels of Logic = 0) + Clock Path Skew: -0.024ns (1.569 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X40Y71.CE net (fanout=129) 4.272 U0_ARK/valid_out + SLICE_X40Y71.CLK Tceck 0.284 ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout<0> + ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 + ------------------------------------------------- --------------------------- + Total 4.893ns (0.621ns logic, 4.272ns route) + (12.7% logic, 87.3% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 (SLICE_X43Y72.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.150ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 (FF) + Requirement: 5.000ns + Data Path Delay: 4.797ns (Levels of Logic = 0) + Clock Path Skew: -0.018ns (1.575 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X43Y72.CE net (fanout=129) 4.142 U0_ARK/valid_out + SLICE_X43Y72.CLK Tceck 0.318 ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout<1> + ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 + ------------------------------------------------- --------------------------- + Total 4.797ns (0.655ns logic, 4.142ns route) + (13.7% logic, 86.3% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 (SLICE_X43Y76.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.159ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 (FF) + Requirement: 5.000ns + Data Path Delay: 4.789ns (Levels of Logic = 0) + Clock Path Skew: -0.017ns (1.576 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X43Y76.CE net (fanout=129) 4.134 U0_ARK/valid_out + SLICE_X43Y76.CLK Tceck 0.318 ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout<2> + ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 + ------------------------------------------------- --------------------------- + Total 4.789ns (0.655ns logic, 4.134ns route) + (13.7% logic, 86.3% route) + +-------------------------------------------------------------------------------- + +Hold Paths: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; +-------------------------------------------------------------------------------- + +Paths for end point U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 (SLICE_X60Y160.A5), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.006ns (requirement - (clock path skew + uncertainty - data path)) + Source: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 (FF) + Destination: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 (FF) + Requirement: 0.000ns + Data Path Delay: 0.116ns (Levels of Logic = 1) + Clock Path Skew: 0.110ns (0.784 - 0.674) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 to U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X61Y158.BQ Tcko 0.098 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout<4> + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 + SLICE_X60Y160.A5 net (fanout=2) 0.119 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout<4> + SLICE_X60Y160.CLK Tah (-Th) 0.101 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed<39> + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/temp_round_key<4>1 + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 + ------------------------------------------------- --------------------------- + Total 0.116ns (-0.003ns logic, 0.119ns route) + (-2.6% logic, 102.6% route) + +-------------------------------------------------------------------------------- + +Paths for end point U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 (SLICE_X40Y160.A5), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.016ns (requirement - (clock path skew + uncertainty - data path)) + Source: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 (FF) + Destination: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 (FF) + Requirement: 0.000ns + Data Path Delay: 0.124ns (Levels of Logic = 1) + Clock Path Skew: 0.108ns (0.748 - 0.640) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 to U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X40Y159.CQ Tcko 0.115 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage<14> + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 + SLICE_X40Y160.A5 net (fanout=1) 0.110 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage<12> + SLICE_X40Y160.CLK Tah (-Th) 0.101 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed<47> + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/temp_round_key<12>1 + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 + ------------------------------------------------- --------------------------- + Total 0.124ns (0.014ns logic, 0.110ns route) + (11.3% logic, 88.7% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[8].U_ROUND/U_MIX/data_out_38 (SLICE_X54Y160.B6), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.028ns (requirement - (clock path skew + uncertainty - data path)) + Source: ROUND[8].U_ROUND/U_SH/data_out_46 (FF) + Destination: ROUND[8].U_ROUND/U_MIX/data_out_38 (FF) + Requirement: 0.000ns + Data Path Delay: 0.137ns (Levels of Logic = 1) + Clock Path Skew: 0.109ns (0.773 - 0.664) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: ROUND[8].U_ROUND/U_SH/data_out_46 to ROUND[8].U_ROUND/U_MIX/data_out_38 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X54Y159.DQ Tcko 0.115 ROUND[8].U_ROUND/U_SH/data_out<46> + ROUND[8].U_ROUND/U_SH/data_out_46 + SLICE_X54Y160.B6 net (fanout=5) 0.099 ROUND[8].U_ROUND/U_SH/data_out<46> + SLICE_X54Y160.CLK Tah (-Th) 0.077 ROUND[8].U_ROUND/U_MIX/data_out<40> + ROUND[8].U_ROUND/U_MIX/Mxor_State_Mulx3[8][7]_State_Mulx2[11][7]_xor_99_OUT_6_xo<0>1 + ROUND[8].U_ROUND/U_MIX/data_out_38 + ------------------------------------------------- --------------------------- + Total 0.137ns (0.038ns logic, 0.099ns route) + (27.7% logic, 72.3% route) + +-------------------------------------------------------------------------------- + +Component Switching Limit Checks: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; +-------------------------------------------------------------------------------- +Slack: 3.571ns (period - min period limit) + Period: 5.000ns + Min period limit: 1.429ns (699.790MHz) (Tbcper_I) + Physical resource: clk_BUFGP/BUFG/I0 + Logical resource: clk_BUFGP/BUFG/I0 + Location pin: BUFGCTRL_X0Y0.I0 + Clock network: clk_BUFGP/IBUFG +-------------------------------------------------------------------------------- +Slack: 4.168ns (period - (min high pulse limit / (high pulse / period))) + Period: 5.000ns + High pulse: 2.500ns + High pulse limit: 0.416ns (Trpw) + Physical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout<5>/SR + Logical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout_5/SR + Location pin: SLICE_X0Y81.SR + Clock network: ROUND[0].U_ROUND/U_KEY/reset_inv_BUFG +-------------------------------------------------------------------------------- +Slack: 4.168ns (period - (min high pulse limit / (high pulse / period))) + Period: 5.000ns + High pulse: 2.500ns + High pulse limit: 0.416ns (Trpw) + Physical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout<1>/SR + Logical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout_1/SR + Location pin: SLICE_X0Y85.SR + Clock network: ROUND[0].U_ROUND/U_KEY/reset_inv_BUFG +-------------------------------------------------------------------------------- + + +All constraints were met. + + +Data Sheet report: +----------------- +All values displayed in nanoseconds (ns) + +Clock to Setup on destination clock clk +---------------+---------+---------+---------+---------+ + | Src:Rise| Src:Fall| Src:Rise| Src:Fall| +Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall| +---------------+---------+---------+---------+---------+ +clk | 4.952| | | | +---------------+---------+---------+---------+---------+ + + +Timing summary: +--------------- + +Timing errors: 0 Score: 0 (Setup/Max: 0, Hold: 0) + +Constraints cover 75065 paths, 0 nets, and 69159 connections + +Design statistics: + Minimum period: 4.952ns{1} (Maximum frequency: 201.939MHz) + + +------------------------------------Footnotes----------------------------------- +1) The minimum period statistic assumes all single cycle delays. + +Analysis completed Wed Jul 17 15:21:24 2013 +-------------------------------------------------------------------------------- + +Trace Settings: +------------------------- +Trace Settings + +Peak Memory Usage: 873 MB + + + Index: trunk/reports/Top_PipelinedCipher.syr =================================================================== --- trunk/reports/Top_PipelinedCipher.syr (nonexistent) +++ trunk/reports/Top_PipelinedCipher.syr (revision 2) @@ -0,0 +1,524 @@ +Release 12.1 - xst M.53d (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. +--> Parameter TMPDIR set to xst/projnav.tmp + + +Total REAL time to Xst completion: 1.00 secs +Total CPU time to Xst completion: 0.15 secs + +--> Parameter xsthdpdir set to xst + + +Total REAL time to Xst completion: 1.00 secs +Total CPU time to Xst completion: 0.15 secs + +--> Reading design: Top_PipelinedCipher.prj + +TABLE OF CONTENTS + 1) Synthesis Options Summary + 2) HDL Parsing + 3) HDL Elaboration + 4) HDL Synthesis + 4.1) HDL Synthesis Report + 5) Advanced HDL Synthesis + 5.1) Advanced HDL Synthesis Report + 6) Low Level Synthesis + 7) Partition Report + 8) Design Summary + 8.1) Primitive and Black Box Usage + 8.2) Device utilization summary + 8.3) Partition Resource Summary + 8.4) Timing Report + 8.4.1) Clock Information + 8.4.2) Asynchronous Control Signals Information + 8.4.3) Timing Summary + 8.4.4) Timing Details + + +========================================================================= +* Synthesis Options Summary * +========================================================================= +---- Source Parameters +Input File Name : "Top_PipelinedCipher.prj" +Input Format : mixed +Ignore Synthesis Constraint File : NO + +---- Target Parameters +Output File Name : "Top_PipelinedCipher" +Output Format : NGC +Target Device : xc6vcx240t-2-ff784 + +---- Source Options +Top Module Name : Top_PipelinedCipher +Automatic FSM Extraction : YES +FSM Encoding Algorithm : Auto +Safe Implementation : No +FSM Style : lut +RAM Extraction : Yes +RAM Style : Auto +ROM Extraction : Yes +Shift Register Extraction : YES +ROM Style : Auto +Resource Sharing : YES +Asynchronous To Synchronous : NO +Shift Register Minimum Size : 2 +Use DSP Block : auto +Automatic Register Balancing : No + +---- Target Options +LUT Combining : auto +Reduce Control Sets : auto +Add IO Buffers : YES +Global Maximum Fanout : 100000 +Add Generic Clock Buffer(BUFG) : 32 +Register Duplication : YES +Optimize Instantiated Primitives : NO +Use Clock Enable : Auto +Use Synchronous Set : Auto +Use Synchronous Reset : Auto +Pack IO Registers into IOBs : auto +Equivalent register Removal : YES + +---- General Options +Optimization Goal : Speed +Optimization Effort : 1 +Power Reduction : NO +Library Search Order : Top_PipelinedCipher.lso +Keep Hierarchy : NO +Netlist Hierarchy : as_optimized +RTL Output : Yes +Global Optimization : AllClockNets +Read Cores : YES +Write Timing Constraints : NO +Cross Clock Analysis : NO +Hierarchy Separator : / +Bus Delimiter : <> +Case Specifier : maintain +Slice Utilization Ratio : 100 +BRAM Utilization Ratio : 100 +DSP48 Utilization Ratio : 100 +Auto BRAM Packing : NO +Slice Utilization Ratio Delta : 5 + +========================================================================= + + +========================================================================= +* HDL Parsing * +========================================================================= +Parsing Verilog file "E:\AES\AES\SBox.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\SubBytes.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\ShiftRows.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\RoundKeyGen.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\MixColumns.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\AddRoundKey.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\Round.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\KeyExpantion.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\Top_PipelinedCipher.v" into library work +Parsing module . + +========================================================================= +* HDL Elaboration * +========================================================================= + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +========================================================================= +* HDL Synthesis * +========================================================================= + +Synthesizing Unit . + Related source file is "e:/aes/aes/top_pipelinedcipher.v". + DATA_W = 128 + KEY_L = 128 + NO_ROUNDS = 10 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/keyexpantion.v". + DATA_W = 128 + KEY_L = 128 + NO_ROUNDS = 10 + Summary: + no macro. +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/roundkeygen.v". + KEY_L = 128 + WORD = 32 + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 515 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/subbytes.v". + DATA_W = 32 + NO_BYTES = 4 + Found 1-bit register for signal . + Summary: + inferred 1 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/sbox.v". + Found 8-bit register for signal . + Found 256x8-bit Read Only RAM for signal + Summary: + inferred 1 RAM(s). + inferred 8 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/addroundkey.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/round.v". + DATA_W = 128 + Summary: + no macro. +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/subbytes.v". + DATA_W = 128 + NO_BYTES = 16 + Found 1-bit register for signal . + Summary: + inferred 1 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/shiftrows.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/mixcolumns.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). + inferred 16 Multiplexer(s). +Unit synthesized. + +========================================================================= +HDL Synthesis Report + +Macro Statistics +# RAMs : 200 + 256x8-bit single-port Read Only RAM : 200 +# Registers : 352 + 1-bit register : 81 + 128-bit register : 71 + 8-bit register : 200 +# Multiplexers : 144 + 8-bit 2-to-1 multiplexer : 144 +# Xors : 349 + 128-bit xor2 : 11 + 32-bit xor2 : 50 + 8-bit xor2 : 144 + 8-bit xor5 : 144 + +========================================================================= + +========================================================================= +* Advanced HDL Synthesis * +========================================================================= + + +Synthesizing (advanced) Unit . +INFO:Xst:3030 - HDL ADVISOR - Register currently described with an asynchronous reset, could be combined with distributed RAM for implementation on block RAM resources if you made this reset synchronous instead. + ----------------------------------------------------------------------- + | ram_type | Distributed | | + ----------------------------------------------------------------------- + | Port A | + | aspect ratio | 256-word x 8-bit | | + | weA | connected to signal | high | + | addrA | connected to signal | | + | diA | connected to signal | | + | doA | connected to internal node | | + ----------------------------------------------------------------------- +INFO:Xst:3031 - HDL ADVISOR - The RAM will be implemented on LUTs either because you have described an asynchronous read or because of currently unsupported block RAM features. If you have described an asynchronous read, making it synchronous would allow you to take advantage of available block RAM resources, for optimized device usage and improved timings. Please refer to your documentation for coding guidelines. +Unit synthesized (advanced). + +========================================================================= +Advanced HDL Synthesis Report + +Macro Statistics +# RAMs : 200 + 256x8-bit single-port distributed Read Only RAM : 200 +# Registers : 10769 + Flip-Flops : 10769 +# Multiplexers : 144 + 8-bit 2-to-1 multiplexer : 144 +# Xors : 349 + 128-bit xor2 : 11 + 32-bit xor2 : 50 + 8-bit xor2 : 144 + 8-bit xor5 : 144 + +========================================================================= + +========================================================================= +* Low Level Synthesis * +========================================================================= + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Mapping all equations... +Building and optimizing final netlist ... +Found area constraint ratio of 100 (+ 5) on block Top_PipelinedCipher, actual ratio is 12. + +Final Macro Processing ... + +========================================================================= +Final Register Report + +Macro Statistics +# Registers : 10769 + Flip-Flops : 10769 + +========================================================================= + +========================================================================= +* Partition Report * +========================================================================= + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +========================================================================= +* Design Summary * +========================================================================= + +Top Level Output File Name : Top_PipelinedCipher.ngc + +Primitive and Black Box Usage: +------------------------------ +# BELS : 15403 +# INV : 1 +# LUT2 : 810 +# LUT3 : 320 +# LUT4 : 1600 +# LUT5 : 1040 +# LUT6 : 6832 +# MUXF7 : 3200 +# MUXF8 : 1600 +# FlipFlops/Latches : 10769 +# FDC : 81 +# FDCE : 10688 +# Clock Buffers : 2 +# BUFG : 1 +# BUFGP : 1 +# IO Buffers : 388 +# IBUF : 259 +# OBUF : 129 + +Device utilization summary: +--------------------------- + +Selected Device : 6vcx240tff784-2 + + +Slice Logic Utilization: + Number of Slice Registers: 10769 out of 301440 3% + Number of Slice LUTs: 10603 out of 150720 7% + Number used as Logic: 10603 out of 150720 7% + +Slice Logic Distribution: + Number of LUT Flip Flop pairs used: 15921 + Number with an unused Flip Flop: 5152 out of 15921 32% + Number with an unused LUT: 5318 out of 15921 33% + Number of fully used LUT-FF pairs: 5451 out of 15921 34% + Number of unique control sets: 82 + +IO Utilization: + Number of IOs: 389 + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + +--------------------------- +Partition Resource Summary: +--------------------------- + + No Partitions were found in this design. + +--------------------------- + + +========================================================================= +Timing Report + +NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. + FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT + GENERATED AFTER PLACE-and-ROUTE. + +Clock Information: +------------------ +-----------------------------------+------------------------+-------+ +Clock Signal | Clock buffer(FF name) | Load | +-----------------------------------+------------------------+-------+ +clk | BUFGP | 10769 | +-----------------------------------+------------------------+-------+ + +Asynchronous Control Signals Information: +---------------------------------------- +No asynchronous control signals found in this design + +Timing Summary: +--------------- +Speed Grade: -2 + + Minimum period: 1.564ns (Maximum Frequency: 639.391MHz) + Minimum input arrival time before clock: 1.252ns + Maximum output required time after clock: 0.664ns + Maximum combinational path delay: No path found + +Timing Details: +--------------- +All values displayed in nanoseconds (ns) + +========================================================================= +Timing constraint: Default period analysis for Clock 'clk' + Clock period: 1.564ns (frequency: 639.391MHz) + Total number of paths / destination ports: 75065 / 20943 +------------------------------------------------------------------------- +Delay: 1.564ns (Levels of Logic = 3) + Source: U_KEYEXP/RKGEN_U0/Key_FirstStage_24 (FF) + Destination: U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_7 (FF) + Source Clock: clk rising + Destination Clock: clk rising + + Data Path: U_KEYEXP/RKGEN_U0/Key_FirstStage_24 to U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_7 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDCE:C->Q 33 0.317 0.826 U_KEYEXP/RKGEN_U0/Key_FirstStage_24 (U_KEYEXP/RKGEN_U0/Key_FirstStage_24) + LUT6:I0->O 1 0.061 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT23 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT23) + MUXF7:I1->O 1 0.211 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f7_0 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f71) + MUXF8:I0->O 1 0.149 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f8 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/addr[7]_GND_5_o_wide_mux_0_OUT<1>) + FDCE:D -0.002 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_1 + ---------------------------------------- + Total 1.564ns (0.738ns logic, 0.826ns route) + (47.2% logic, 52.8% route) + +========================================================================= +Timing constraint: Default OFFSET IN BEFORE for Clock 'clk' + Total number of paths / destination ports: 771 / 514 +------------------------------------------------------------------------- +Offset: 1.252ns (Levels of Logic = 2) + Source: cipherkey_valid_in (PAD) + Destination: U0_ARK/data_out_127 (FF) + Destination Clock: clk rising + + Data Path: cipherkey_valid_in to U0_ARK/data_out_127 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + IBUF:I->O 130 0.003 0.505 cipherkey_valid_in_IBUF (cipherkey_valid_in_IBUF) + LUT2:I1->O 129 0.061 0.487 U0_ARK/data_valid_in_key_valid_in_AND_2_o1 (U0_ARK/data_valid_in_key_valid_in_AND_2_o) + FDCE:CE 0.196 U0_ARK/data_out_0 + ---------------------------------------- + Total 1.252ns (0.260ns logic, 0.992ns route) + (20.8% logic, 79.2% route) + +========================================================================= +Timing constraint: Default OFFSET OUT AFTER for Clock 'clk' + Total number of paths / destination ports: 129 / 129 +------------------------------------------------------------------------- +Offset: 0.664ns (Levels of Logic = 1) + Source: U_KEY/data_out_127 (FF) + Destination: cipher_text<127> (PAD) + Source Clock: clk rising + + Data Path: U_KEY/data_out_127 to cipher_text<127> + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDCE:C->Q 2 0.317 0.344 U_KEY/data_out_127 (U_KEY/data_out_127) + OBUF:I->O 0.003 cipher_text_127_OBUF (cipher_text<127>) + ---------------------------------------- + Total 0.664ns (0.320ns logic, 0.344ns route) + (48.2% logic, 51.8% route) + +========================================================================= + + +Total REAL time to Xst completion: 106.00 secs +Total CPU time to Xst completion: 105.60 secs + +--> + +Total memory usage is 397192 kilobytes + +Number of errors : 0 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 2 ( 0 filtered) + Index: trunk/reports/Top_PipelinedCipher.par =================================================================== --- trunk/reports/Top_PipelinedCipher.par (nonexistent) +++ trunk/reports/Top_PipelinedCipher.par (revision 2) @@ -0,0 +1,190 @@ +Release 12.1 par M.53d (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. + +AMRSALAH-PC:: Wed Jul 17 15:17:40 2013 + +par -w -intstyle ise -ol high Top_PipelinedCipher_map.ncd +Top_PipelinedCipher.ncd Top_PipelinedCipher.pcf + + +Constraints file: Top_PipelinedCipher.pcf. +Loading device for application Rf_Device from file '6vcx240t.nph' in environment E:\ISE12\ISE_DS\ISE. + "Top_PipelinedCipher" is an NCD, version 3.2, device xc6vcx240t, package ff784, speed -2 +vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +INFO:Security:56 - Part 'xc6vcx240t' is not a WebPack part. +WARNING:Security:42 - Your software subscription period has lapsed. Your current version of Xilinx tools will continue +to function, but you no longer qualify for Xilinx software updates or new releases. + +---------------------------------------------------------------------- + +Initializing temperature to 85.000 Celsius. (default - Range: 0.000 to 85.000 Celsius) +Initializing voltage to 0.950 Volts. (default - Range: 0.950 to 1.050 Volts) + + +Device speed data version: "PRELIMINARY 1.04 2010-04-09". + + + +Device Utilization Summary: + +Slice Logic Utilization: + Number of Slice Registers: 10,769 out of 301,440 3% + Number used as Flip Flops: 10,769 + Number used as Latches: 0 + Number used as Latch-thrus: 0 + Number used as AND/OR logics: 0 + Number of Slice LUTs: 12,475 out of 150,720 8% + Number used as logic: 9,842 out of 150,720 6% + Number using O6 output only: 9,081 + Number using O5 output only: 0 + Number using O5 and O6: 761 + Number used as ROM: 0 + Number used as Memory: 0 out of 58,400 0% + Number used exclusively as route-thrus: 2,633 + Number with same-slice register load: 2,633 + Number with same-slice carry load: 0 + Number with other load: 0 + +Slice Logic Distribution: + Number of occupied Slices: 3,214 out of 37,680 8% + Number of LUT Flip Flop pairs used: 12,527 + Number with an unused Flip Flop: 5,031 out of 12,527 40% + Number with an unused LUT: 52 out of 12,527 1% + Number of fully used LUT-FF pairs: 7,444 out of 12,527 59% + Number of slice register sites lost + to control set restrictions: 0 out of 301,440 0% + + A LUT Flip Flop pair for this architecture represents one LUT paired with + one Flip Flop within a slice. A control set is a unique combination of + clock, reset, set, and enable signals for a registered element. + The Slice Logic Distribution report is not meaningful if the design is + over-mapped for a non-slice resource or if Placement fails. + OVERMAPPING of BRAM resources should be ignored if the design is + over-mapped for a non-BRAM resource or if placement fails. + +IO Utilization: + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of RAMB36E1/FIFO36E1s: 0 out of 416 0% + Number of RAMB18E1/FIFO18E1s: 0 out of 832 0% + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + Number used as BUFGs: 2 + Number used as BUFGCTRLs: 0 + Number of ILOGICE1/ISERDESE1s: 0 out of 720 0% + Number of OLOGICE1/OSERDESE1s: 0 out of 720 0% + Number of BSCANs: 0 out of 4 0% + Number of BUFHCEs: 0 out of 144 0% + Number of BUFIODQSs: 0 out of 72 0% + Number of BUFRs: 0 out of 36 0% + Number of CAPTUREs: 0 out of 1 0% + Number of DSP48E1s: 0 out of 768 0% + Number of EFUSE_USRs: 0 out of 1 0% + Number of GTXE1s: 0 out of 12 0% + Number of IBUFDS_GTXE1s: 0 out of 8 0% + Number of ICAPs: 0 out of 2 0% + Number of IDELAYCTRLs: 0 out of 18 0% + Number of IODELAYE1s: 0 out of 720 0% + Number of MMCM_ADVs: 0 out of 12 0% + Number of PCIE_2_0s: 0 out of 2 0% + Number of STARTUPs: 1 out of 1 100% + Number of SYSMONs: 0 out of 1 0% + Number of TEMAC_SINGLEs: 0 out of 1 0% + + +Overall effort level (-ol): High +Router effort level (-rl): High + +Starting initial Timing Analysis. REAL time: 35 secs +Finished initial Timing Analysis. REAL time: 36 secs + +Starting Router + + +Phase 1 : 77964 unrouted; REAL time: 42 secs + +Phase 2 : 70512 unrouted; REAL time: 54 secs + +Phase 3 : 26862 unrouted; REAL time: 1 mins 44 secs + +Phase 4 : 26860 unrouted; (Setup:0, Hold:1, Component Switching Limit:0) REAL time: 1 mins 56 secs + +Updating file: Top_PipelinedCipher.ncd with current fully routed design. + +Phase 5 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 6 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 7 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 8 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 9 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 10 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 38 secs +Total REAL time to Router completion: 2 mins 38 secs +Total CPU time to Router completion: 2 mins 42 secs + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +Generating "PAR" statistics. + +************************** +Generating Clock Report +************************** + ++---------------------+--------------+------+------+------------+-------------+ +| Clock Net | Resource |Locked|Fanout|Net Skew(ns)|Max Delay(ns)| ++---------------------+--------------+------+------+------------+-------------+ +| clk_BUFGP | BUFGCTRL_X0Y0| No | 3213 | 0.252 | 1.834 | ++---------------------+--------------+------+------+------------+-------------+ + +* Net Skew is the difference between the minimum and maximum routing +only delays for the net. Note this is different from Clock Skew which +is reported in TRCE timing report. Clock Skew is the difference between +the minimum and maximum path delays which includes logic delays. + +Timing Score: 0 (Setup: 0, Hold: 0, Component Switching Limit: 0) + +Asterisk (*) preceding a constraint indicates it was not met. + This may be due to a setup or hold violation. + +---------------------------------------------------------------------------------------------------------- + Constraint | Check | Worst Case | Best Case | Timing | Timing + | | Slack | Achievable | Errors | Score +---------------------------------------------------------------------------------------------------------- + TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 5 | SETUP | 0.048ns| 4.952ns| 0| 0 + 0% | HOLD | 0.006ns| | 0| 0 +---------------------------------------------------------------------------------------------------------- + + +All constraints were met. + + +Generating Pad Report. + +All signals are completely routed. + +Total REAL time to PAR completion: 2 mins 46 secs +Total CPU time to PAR completion: 2 mins 49 secs + +Peak Memory Usage: 1113 MB + +Placer: Placement generated during map. +Routing: Completed - No errors found. +Timing: Completed - No errors found. + +Number of error messages: 0 +Number of warning messages: 0 +Number of info messages: 0 + +Writing design to file Top_PipelinedCipher.ncd + + + +PAR done! Index: tags/R0/rtl/SBox.v =================================================================== --- tags/R0/rtl/SBox.v (nonexistent) +++ tags/R0/rtl/SBox.v (revision 2) @@ -0,0 +1,308 @@ +/* +Project : AES +Standard doc. : FIPS 197 +Module name : SBox block +Dependancy : +Design doc. : +References : +Description : Sbox is a lookup/substitution table to + substitute the input byte +Owner : Amr Salah +*/ + +`timescale 1 ns/1 ps + +module SBox +( +input clk, //system clock +input reset, //asynch active low reset +input valid_in, //valid input signal +input [7:0] addr, //SBox input byte +output reg [7:0] dout //SBox output +); + +always @ ( posedge clk or negedge reset) + if (!reset) begin + dout <= 8'h00; + end else begin + + if(valid_in) begin + case (addr) //substitution table + 8'h00 : dout <= 8'h63; + 8'h01 : dout <= 8'h7c; + 8'h02 : dout <= 8'h77; + 8'h03 : dout <= 8'h7b; + 8'h04 : dout <= 8'hf2; + 8'h05 : dout <= 8'h6b; + 8'h06 : dout <= 8'h6f; + 8'h07 : dout <= 8'hc5; + 8'h08 : dout <= 8'h30; + 8'h09 : dout <= 8'h01; + 8'h0a : dout <= 8'h67; + 8'h0b : dout <= 8'h2b; + 8'h0c : dout <= 8'hfe; + 8'h0d : dout <= 8'hd7; + 8'h0e : dout <= 8'hab; + 8'h0f : dout <= 8'h76; + /****************************************/ + 8'h10 : dout <= 8'hca; + 8'h11 : dout <= 8'h82; + 8'h12 : dout <= 8'hc9; + 8'h13 : dout <= 8'h7d; + 8'h14 : dout <= 8'hfa; + 8'h15 : dout <= 8'h59; + 8'h16 : dout <= 8'h47; + 8'h17 : dout <= 8'hf0; + 8'h18 : dout <= 8'had; + 8'h19 : dout <= 8'hd4; + 8'h1a : dout <= 8'ha2; + 8'h1b : dout <= 8'haf; + 8'h1c : dout <= 8'h9c; + 8'h1d : dout <= 8'ha4; + 8'h1e : dout <= 8'h72; + 8'h1f : dout <= 8'hc0; + /**********************************************/ + 8'h20 : dout <= 8'hb7; + 8'h21 : dout <= 8'hfd; + 8'h22 : dout <= 8'h93; + 8'h23 : dout <= 8'h26; + 8'h24 : dout <= 8'h36; + 8'h25 : dout <= 8'h3f; + 8'h26 : dout <= 8'hf7; + 8'h27 : dout <= 8'hcc; + 8'h28 : dout <= 8'h34; + 8'h29 : dout <= 8'ha5; + 8'h2a : dout <= 8'he5; + 8'h2b : dout <= 8'hf1; + 8'h2c : dout <= 8'h71; + 8'h2d : dout <= 8'hd8; + 8'h2e : dout <= 8'h31; + 8'h2f : dout <= 8'h15; + /*****************************************/ + 8'h30 : dout <= 8'h04; + 8'h31 : dout <= 8'hc7; + 8'h32 : dout <= 8'h23; + 8'h33 : dout <= 8'hc3; + 8'h34 : dout <= 8'h18; + 8'h35 : dout <= 8'h96; + 8'h36 : dout <= 8'h05; + 8'h37 : dout <= 8'h9a; + 8'h38 : dout <= 8'h07; + 8'h39 : dout <= 8'h12; + 8'h3a : dout <= 8'h80; + 8'h3b : dout <= 8'he2; + 8'h3c : dout <= 8'heb; + 8'h3d : dout <= 8'h27; + 8'h3e : dout <= 8'hb2; + 8'h3f : dout <= 8'h75; + /*******************************************/ + 8'h40 : dout <= 8'h09; + 8'h41 : dout <= 8'h83; + 8'h42 : dout <= 8'h2c; + 8'h43 : dout <= 8'h1a; + 8'h44 : dout <= 8'h1b; + 8'h45 : dout <= 8'h6e; + 8'h46 : dout <= 8'h5a; + 8'h47 : dout <= 8'ha0; + 8'h48 : dout <= 8'h52; + 8'h49 : dout <= 8'h3b; + 8'h4a : dout <= 8'hd6; + 8'h4b : dout <= 8'hb3; + 8'h4c : dout <= 8'h29; + 8'h4d : dout <= 8'he3; + 8'h4e : dout <= 8'h2f; + 8'h4f : dout <= 8'h84; + /**********************************************/ + 8'h50 : dout <= 8'h53; + 8'h51 : dout <= 8'hd1; + 8'h52 : dout <= 8'h00; + 8'h53 : dout <= 8'hed; + 8'h54 : dout <= 8'h20; + 8'h55 : dout <= 8'hfc; + 8'h56 : dout <= 8'hb1; + 8'h57 : dout <= 8'h5b; + 8'h58 : dout <= 8'h6a; + 8'h59 : dout <= 8'hcb; + 8'h5a : dout <= 8'hbe; + 8'h5b : dout <= 8'h39; + 8'h5c : dout <= 8'h4a; + 8'h5d : dout <= 8'h4c; + 8'h5e : dout <= 8'h58; + 8'h5f : dout <= 8'hcf; + /****************************************/ + 8'h60 : dout <= 8'hd0; + 8'h61 : dout <= 8'hef; + 8'h62 : dout <= 8'haa; + 8'h63 : dout <= 8'hfb; + 8'h64 : dout <= 8'h43; + 8'h65 : dout <= 8'h4d; + 8'h66 : dout <= 8'h33; + 8'h67 : dout <= 8'h85; + 8'h68 : dout <= 8'h45; + 8'h69 : dout <= 8'hf9; + 8'h6a : dout <= 8'h02; + 8'h6b : dout <= 8'h7f; + 8'h6c : dout <= 8'h50; + 8'h6d : dout <= 8'h3c; + 8'h6e : dout <= 8'h9f; + 8'h6f : dout <= 8'ha8; + /*********************************************/ + 8'h70 : dout <= 8'h51; + 8'h71 : dout <= 8'ha3; + 8'h72 : dout <= 8'h40; + 8'h73 : dout <= 8'h8f; + 8'h74 : dout <= 8'h92; + 8'h75 : dout <= 8'h9d; + 8'h76 : dout <= 8'h38; + 8'h77 : dout <= 8'hf5; + 8'h78 : dout <= 8'hbc; + 8'h79 : dout <= 8'hb6; + 8'h7a : dout <= 8'hda; + 8'h7b : dout <= 8'h21; + 8'h7c : dout <= 8'h10; + 8'h7d : dout <= 8'hff; + 8'h7e : dout <= 8'hf3; + 8'h7f : dout <= 8'hd2; + /********************************************/ + 8'h80 : dout <= 8'hcd; + 8'h81 : dout <= 8'h0c; + 8'h82 : dout <= 8'h13; + 8'h83 : dout <= 8'hec; + 8'h84 : dout <= 8'h5f; + 8'h85 : dout <= 8'h97; + 8'h86 : dout <= 8'h44; + 8'h87 : dout <= 8'h17; + 8'h88 : dout <= 8'hc4; + 8'h89 : dout <= 8'ha7; + 8'h8a : dout <= 8'h7e; + 8'h8b : dout <= 8'h3d; + 8'h8c : dout <= 8'h64; + 8'h8d : dout <= 8'h5d; + 8'h8e : dout <= 8'h19; + 8'h8f : dout <= 8'h73; + /***********************************************/ + 8'h90 : dout <= 8'h60; + 8'h91 : dout <= 8'h81; + 8'h92 : dout <= 8'h4f; + 8'h93 : dout <= 8'hdc; + 8'h94 : dout <= 8'h22; + 8'h95 : dout <= 8'h2a; + 8'h96 : dout <= 8'h90; + 8'h97 : dout <= 8'h88; + 8'h98 : dout <= 8'h46; + 8'h99 : dout <= 8'hee; + 8'h9a : dout <= 8'hb8; + 8'h9b : dout <= 8'h14; + 8'h9c : dout <= 8'hde; + 8'h9d : dout <= 8'h5e; + 8'h9e : dout <= 8'h0b; + 8'h9f : dout <= 8'hdb; + /******************************************/ + 8'ha0 : dout <= 8'he0; + 8'ha1 : dout <= 8'h32; + 8'ha2 : dout <= 8'h3a; + 8'ha3 : dout <= 8'h0a; + 8'ha4 : dout <= 8'h49; + 8'ha5 : dout <= 8'h06; + 8'ha6 : dout <= 8'h24; + 8'ha7 : dout <= 8'h5c; + 8'ha8 : dout <= 8'hc2; + 8'ha9 : dout <= 8'hd3; + 8'haa : dout <= 8'hac; + 8'hab : dout <= 8'h62; + 8'hac : dout <= 8'h91; + 8'had : dout <= 8'h95; + 8'hae : dout <= 8'he4; + 8'haf : dout <= 8'h79; + /******************************************/ + 8'hb0 : dout <= 8'he7; + 8'hb1 : dout <= 8'hc8; + 8'hb2 : dout <= 8'h37; + 8'hb3 : dout <= 8'h6d; + 8'hb4 : dout <= 8'h8d; + 8'hb5 : dout <= 8'hd5; + 8'hb6 : dout <= 8'h4e; + 8'hb7 : dout <= 8'ha9; + 8'hb8 : dout <= 8'h6c; + 8'hb9 : dout <= 8'h56; + 8'hba : dout <= 8'hf4; + 8'hbb : dout <= 8'hea; + 8'hbc : dout <= 8'h65; + 8'hbd : dout <= 8'h7a; + 8'hbe : dout <= 8'hae; + 8'hbf : dout <= 8'h08; + /****************************************/ + 8'hc0 : dout <= 8'hba; + 8'hc1 : dout <= 8'h78; + 8'hc2 : dout <= 8'h25; + 8'hc3 : dout <= 8'h2e; + 8'hc4 : dout <= 8'h1c; + 8'hc5 : dout <= 8'ha6; + 8'hc6 : dout <= 8'hb4; + 8'hc7 : dout <= 8'hc6; + 8'hc8 : dout <= 8'he8; + 8'hc9 : dout <= 8'hdd; + 8'hca : dout <= 8'h74; + 8'hcb : dout <= 8'h1f; + 8'hcc : dout <= 8'h4b; + 8'hcd : dout <= 8'hbd; + 8'hce : dout <= 8'h8b; + 8'hcf : dout <= 8'h8a; + /****************************************/ + 8'hd0 : dout <= 8'h70; + 8'hd1 : dout <= 8'h3e; + 8'hd2 : dout <= 8'hb5; + 8'hd3 : dout <= 8'h66; + 8'hd4 : dout <= 8'h48; + 8'hd5 : dout <= 8'h03; + 8'hd6 : dout <= 8'hf6; + 8'hd7 : dout <= 8'h0e; + 8'hd8 : dout <= 8'h61; + 8'hd9 : dout <= 8'h35; + 8'hda : dout <= 8'h57; + 8'hdb : dout <= 8'hb9; + 8'hdc : dout <= 8'h86; + 8'hdd : dout <= 8'hc1; + 8'hde : dout <= 8'h1d; + 8'hdf : dout <= 8'h9e; + /*******************************************/ + 8'he0 : dout <= 8'he1; + 8'he1 : dout <= 8'hf8; + 8'he2 : dout <= 8'h98; + 8'he3 : dout <= 8'h11; + 8'he4 : dout <= 8'h69; + 8'he5 : dout <= 8'hd9; + 8'he6 : dout <= 8'h8e; + 8'he7 : dout <= 8'h94; + 8'he8 : dout <= 8'h9b; + 8'he9 : dout <= 8'h1e; + 8'hea : dout <= 8'h87; + 8'heb : dout <= 8'he9; + 8'hec : dout <= 8'hce; + 8'hed : dout <= 8'h55; + 8'hee : dout <= 8'h28; + 8'hef : dout <= 8'hdf; + /****************************************/ + 8'hf0 : dout <= 8'h8c; + 8'hf1 : dout <= 8'ha1; + 8'hf2 : dout <= 8'h89; + 8'hf3 : dout <= 8'h0d; + 8'hf4 : dout <= 8'hbf; + 8'hf5 : dout <= 8'he6; + 8'hf6 : dout <= 8'h42; + 8'hf7 : dout <= 8'h68; + 8'hf8 : dout <= 8'h41; + 8'hf9 : dout <= 8'h99; + 8'hfa : dout <= 8'h2d; + 8'hfb : dout <= 8'h0f; + 8'hfc : dout <= 8'hb0; + 8'hfd : dout <= 8'h54; + 8'hfe : dout <= 8'hbb; + 8'hff : dout <= 8'h16; + default : dout <= 8'h00; + + endcase + end +end + +endmodule Index: tags/R0/rtl/KeyExpantion.v =================================================================== --- tags/R0/rtl/KeyExpantion.v (nonexistent) +++ tags/R0/rtl/KeyExpantion.v (revision 2) @@ -0,0 +1,73 @@ +/* +Project : AES +Standard doc. : FIPS 197 +Module name : KeyExpantion block +Dependancy : +Design doc. : +References : +Description : The key Expantion Module is used to + generate round keys from the cipher key using + pipelined architecture +Owner : Amr Salah +*/ + +`timescale 1 ns/1 ps + +module KeyExpantion +# +( +parameter DATA_W = 128, //data width +parameter KEY_L = 128, //key length +parameter NO_ROUNDS = 10 //number of rounds +) +( +input clk, //system clock +input reset, //async reset +input valid_in, //input valid in +input [KEY_L-1:0] cipher_key, //cipher key +output [(NO_ROUNDS*DATA_W)-1:0] W, //contains all generated round keys +output [NO_ROUNDS-1:0] valid_out //output valid signal +); + +wire [31:0] RCON [0:9]; //round constant array of words +wire [NO_ROUNDS-1:0] keygen_valid_out; //every bit represens output valid signal for every RoundKeyGen module +wire [DATA_W-1:0] W_array [0:NO_ROUNDS-1]; //array of round keys to form W output + +//round connstant values +assign RCON[0] = 32'h01000000; +assign RCON[1] = 32'h02000000; +assign RCON[2] = 32'h04000000; +assign RCON[3] = 32'h08000000; +assign RCON[4] = 32'h10000000; +assign RCON[5] = 32'h20000000; +assign RCON[6] = 32'h40000000; +assign RCON[7] = 32'h80000000; +assign RCON[8] = 32'h1b000000; +assign RCON[9] = 32'h36000000; + +//instantiate number RounkeyGen modules = number of rounds to get number of roundkeys = number of rounds +RoundKeyGen #(KEY_L)RKGEN_U0(clk,reset,RCON[0],valid_in,cipher_key,W_array[0],keygen_valid_out[0]); + +genvar i; +generate +for (i=1 ;i reset_done; +end + +initial begin + #10 -> reset_enable; + @ (reset_done); + + for (i=0;i< No_Patterns;i=i+1) begin //apply inputs + @ (posedge clk) + #Clk2Q + data_valid_in = 1; //assert valid signals + cipherkey_valid_in = 1; + plain_text = data_input_vectors[i]; + cipher_key = cipherkey_input_vectors[i]; + end + + @(posedge clk) + data_valid_in = 0; //deassert valid signals + cipherkey_valid_in = 0; + +end + +integer j; + +initial @(reset_done) begin + +repeat((4 * NO_ROUNDS)+1) begin //waiting for first output (latency) +@(posedge clk); +end + +for(j=0;j< No_Patterns;j=j+1) begin //assign expected outputs +@(posedge clk) +data_expected = output_vectors[j]; +end + +end + + +//compare logic + +always @ (posedge clk) begin +if (valid_out || (!reset)) begin + if(data_expected != cipher_text) begin + $display ("DUT ERROR AT TIME%d",$time); + $display ("Expected Data value %h, Got Data Value %h", data_expected, cipher_text); + dut_error = 1; + -> terminate_sim; //stop simulation when error occures + end +end +if(j == No_Patterns) begin //terminate simulation after the end of output vectors + -> terminate_sim; +end + end +endmodule \ No newline at end of file Index: tags/R0/sim/topcipher_key_test_inputs.txt =================================================================== --- tags/R0/sim/topcipher_key_test_inputs.txt (nonexistent) +++ tags/R0/sim/topcipher_key_test_inputs.txt (revision 2) @@ -0,0 +1,284 @@ +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +10a58869d74be5a374cf867cfb473859 +caea65cdbb75e9169ecd22ebe6e54675 +a2e2fa9baf7d20822ca9f0542f764a41 +b6364ac4e1de1e285eaf144a2415f7a0 +64cf9c7abc50b888af65f49d521944b2 +47d6742eefcc0465dc96355e851b64d9 +3eb39790678c56bee34bbcdeccf6cdb5 +64110a924f0743d500ccadae72c13427 +18d8126516f8a12ab1a36d9f04d68e51 +f530357968578480b398a3c251cd1093 +da84367f325d42d601b4326964802e8e +e37b1c6aa2846f6fdb413f238b089f23 +6c002b682483e0cabcc731c253be5674 +143ae8ed6555aba96110ab58893a8ae1 +b69418a85332240dc82492353956ae0c +71b5c08a1993e1362e4d0ce9b22b78d5 +e234cdca2606b81f29408d5f6da21206 +13237c49074a3da078dc1d828bb78c6f +3071a2a48fe6cbd04f1a129098e308f8 +90f42ec0f68385f2ffc5dfc03a654dce +febd9a24d8b65c1c787d50a4ed3619a9 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +80000000000000000000000000000000 +c0000000000000000000000000000000 +e0000000000000000000000000000000 +f0000000000000000000000000000000 +f8000000000000000000000000000000 +fc000000000000000000000000000000 +fe000000000000000000000000000000 +ff000000000000000000000000000000 +ff800000000000000000000000000000 +ffc00000000000000000000000000000 +ffe00000000000000000000000000000 +fff00000000000000000000000000000 +fff80000000000000000000000000000 +fffc0000000000000000000000000000 +fffe0000000000000000000000000000 +ffff0000000000000000000000000000 +ffff8000000000000000000000000000 +ffffc000000000000000000000000000 +ffffe000000000000000000000000000 +fffff000000000000000000000000000 +fffff800000000000000000000000000 +fffffc00000000000000000000000000 +fffffe00000000000000000000000000 +ffffff00000000000000000000000000 +ffffff80000000000000000000000000 +ffffffc0000000000000000000000000 +ffffffe0000000000000000000000000 +fffffff0000000000000000000000000 +fffffff8000000000000000000000000 +fffffffc000000000000000000000000 +fffffffe000000000000000000000000 +ffffffff000000000000000000000000 +ffffffff800000000000000000000000 +ffffffffc00000000000000000000000 +ffffffffe00000000000000000000000 +fffffffff00000000000000000000000 +fffffffff80000000000000000000000 +fffffffffc0000000000000000000000 +fffffffffe0000000000000000000000 +ffffffffff0000000000000000000000 +ffffffffff8000000000000000000000 +ffffffffffc000000000000000000000 +ffffffffffe000000000000000000000 +fffffffffff000000000000000000000 +fffffffffff800000000000000000000 +fffffffffffc00000000000000000000 +fffffffffffe00000000000000000000 +ffffffffffff00000000000000000000 +ffffffffffff80000000000000000000 +ffffffffffffc0000000000000000000 +ffffffffffffe0000000000000000000 +fffffffffffff0000000000000000000 +fffffffffffff8000000000000000000 +fffffffffffffc000000000000000000 +fffffffffffffe000000000000000000 +ffffffffffffff000000000000000000 +ffffffffffffff800000000000000000 +ffffffffffffffc00000000000000000 +ffffffffffffffe00000000000000000 +fffffffffffffff00000000000000000 +fffffffffffffff80000000000000000 +fffffffffffffffc0000000000000000 +fffffffffffffffe0000000000000000 +ffffffffffffffff0000000000000000 +ffffffffffffffff8000000000000000 +ffffffffffffffffc000000000000000 +ffffffffffffffffe000000000000000 +fffffffffffffffff000000000000000 +fffffffffffffffff800000000000000 +fffffffffffffffffc00000000000000 +fffffffffffffffffe00000000000000 +ffffffffffffffffff00000000000000 +ffffffffffffffffff80000000000000 +ffffffffffffffffffc0000000000000 +ffffffffffffffffffe0000000000000 +fffffffffffffffffff0000000000000 +fffffffffffffffffff8000000000000 +fffffffffffffffffffc000000000000 +fffffffffffffffffffe000000000000 +ffffffffffffffffffff000000000000 +ffffffffffffffffffff800000000000 +ffffffffffffffffffffc00000000000 +ffffffffffffffffffffe00000000000 +fffffffffffffffffffff00000000000 +fffffffffffffffffffff80000000000 +fffffffffffffffffffffc0000000000 +fffffffffffffffffffffe0000000000 +ffffffffffffffffffffff0000000000 +ffffffffffffffffffffff8000000000 +ffffffffffffffffffffffc000000000 +ffffffffffffffffffffffe000000000 +fffffffffffffffffffffff000000000 +fffffffffffffffffffffff800000000 +fffffffffffffffffffffffc00000000 +fffffffffffffffffffffffe00000000 +ffffffffffffffffffffffff00000000 +ffffffffffffffffffffffff80000000 +ffffffffffffffffffffffffc0000000 +ffffffffffffffffffffffffe0000000 +fffffffffffffffffffffffff0000000 +fffffffffffffffffffffffff8000000 +fffffffffffffffffffffffffc000000 +fffffffffffffffffffffffffe000000 +ffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffff800000 +ffffffffffffffffffffffffffc00000 +ffffffffffffffffffffffffffe00000 +fffffffffffffffffffffffffff00000 +fffffffffffffffffffffffffff80000 +fffffffffffffffffffffffffffc0000 +fffffffffffffffffffffffffffe0000 +ffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffff8000 +ffffffffffffffffffffffffffffc000 +ffffffffffffffffffffffffffffe000 +fffffffffffffffffffffffffffff000 +fffffffffffffffffffffffffffff800 +fffffffffffffffffffffffffffffc00 +fffffffffffffffffffffffffffffe00 +ffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffff80 +ffffffffffffffffffffffffffffffc0 +ffffffffffffffffffffffffffffffe0 +fffffffffffffffffffffffffffffff0 +fffffffffffffffffffffffffffffff8 +fffffffffffffffffffffffffffffffc +fffffffffffffffffffffffffffffffe +ffffffffffffffffffffffffffffffff \ No newline at end of file Index: tags/R0/sim/topcipher_data_test_inputs.txt =================================================================== --- tags/R0/sim/topcipher_data_test_inputs.txt (nonexistent) +++ tags/R0/sim/topcipher_data_test_inputs.txt (revision 2) @@ -0,0 +1,284 @@ +f34481ec3cc627bacd5dc3fb08f273e6 +9798c4640bad75c7c3227db910174e72 +96ab5c2ff612d9dfaae8c31f30c42168 +6a118a874519e64e9963798a503f1d35 +cb9fceec81286ca3e989bd979b0cb284 +b26aeb1874e47ca8358ff22378f09144 +58c8e00b2631686d54eab84b91f0aca1 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +80000000000000000000000000000000 +c0000000000000000000000000000000 +e0000000000000000000000000000000 +f0000000000000000000000000000000 +f8000000000000000000000000000000 +fc000000000000000000000000000000 +fe000000000000000000000000000000 +ff000000000000000000000000000000 +ff800000000000000000000000000000 +ffc00000000000000000000000000000 +ffe00000000000000000000000000000 +fff00000000000000000000000000000 +fff80000000000000000000000000000 +fffc0000000000000000000000000000 +fffe0000000000000000000000000000 +ffff0000000000000000000000000000 +ffff8000000000000000000000000000 +ffffc000000000000000000000000000 +ffffe000000000000000000000000000 +fffff000000000000000000000000000 +fffff800000000000000000000000000 +fffffc00000000000000000000000000 +fffffe00000000000000000000000000 +ffffff00000000000000000000000000 +ffffff80000000000000000000000000 +ffffffc0000000000000000000000000 +ffffffe0000000000000000000000000 +fffffff0000000000000000000000000 +fffffff8000000000000000000000000 +fffffffc000000000000000000000000 +fffffffe000000000000000000000000 +ffffffff000000000000000000000000 +ffffffff800000000000000000000000 +ffffffffc00000000000000000000000 +ffffffffe00000000000000000000000 +fffffffff00000000000000000000000 +fffffffff80000000000000000000000 +fffffffffc0000000000000000000000 +fffffffffe0000000000000000000000 +ffffffffff0000000000000000000000 +ffffffffff8000000000000000000000 +ffffffffffc000000000000000000000 +ffffffffffe000000000000000000000 +fffffffffff000000000000000000000 +fffffffffff800000000000000000000 +fffffffffffc00000000000000000000 +fffffffffffe00000000000000000000 +ffffffffffff00000000000000000000 +ffffffffffff80000000000000000000 +ffffffffffffc0000000000000000000 +ffffffffffffe0000000000000000000 +fffffffffffff0000000000000000000 +fffffffffffff8000000000000000000 +fffffffffffffc000000000000000000 +fffffffffffffe000000000000000000 +ffffffffffffff000000000000000000 +ffffffffffffff800000000000000000 +ffffffffffffffc00000000000000000 +ffffffffffffffe00000000000000000 +fffffffffffffff00000000000000000 +fffffffffffffff80000000000000000 +fffffffffffffffc0000000000000000 +fffffffffffffffe0000000000000000 +ffffffffffffffff0000000000000000 +ffffffffffffffff8000000000000000 +ffffffffffffffffc000000000000000 +ffffffffffffffffe000000000000000 +fffffffffffffffff000000000000000 +fffffffffffffffff800000000000000 +fffffffffffffffffc00000000000000 +fffffffffffffffffe00000000000000 +ffffffffffffffffff00000000000000 +ffffffffffffffffff80000000000000 +ffffffffffffffffffc0000000000000 +ffffffffffffffffffe0000000000000 +fffffffffffffffffff0000000000000 +fffffffffffffffffff8000000000000 +fffffffffffffffffffc000000000000 +fffffffffffffffffffe000000000000 +ffffffffffffffffffff000000000000 +ffffffffffffffffffff800000000000 +ffffffffffffffffffffc00000000000 +ffffffffffffffffffffe00000000000 +fffffffffffffffffffff00000000000 +fffffffffffffffffffff80000000000 +fffffffffffffffffffffc0000000000 +fffffffffffffffffffffe0000000000 +ffffffffffffffffffffff0000000000 +ffffffffffffffffffffff8000000000 +ffffffffffffffffffffffc000000000 +ffffffffffffffffffffffe000000000 +fffffffffffffffffffffff000000000 +fffffffffffffffffffffff800000000 +fffffffffffffffffffffffc00000000 +fffffffffffffffffffffffe00000000 +ffffffffffffffffffffffff00000000 +ffffffffffffffffffffffff80000000 +ffffffffffffffffffffffffc0000000 +ffffffffffffffffffffffffe0000000 +fffffffffffffffffffffffff0000000 +fffffffffffffffffffffffff8000000 +fffffffffffffffffffffffffc000000 +fffffffffffffffffffffffffe000000 +ffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffff800000 +ffffffffffffffffffffffffffc00000 +ffffffffffffffffffffffffffe00000 +fffffffffffffffffffffffffff00000 +fffffffffffffffffffffffffff80000 +fffffffffffffffffffffffffffc0000 +fffffffffffffffffffffffffffe0000 +ffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffff8000 +ffffffffffffffffffffffffffffc000 +ffffffffffffffffffffffffffffe000 +fffffffffffffffffffffffffffff000 +fffffffffffffffffffffffffffff800 +fffffffffffffffffffffffffffffc00 +fffffffffffffffffffffffffffffe00 +ffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffff80 +ffffffffffffffffffffffffffffffc0 +ffffffffffffffffffffffffffffffe0 +fffffffffffffffffffffffffffffff0 +fffffffffffffffffffffffffffffff8 +fffffffffffffffffffffffffffffffc +fffffffffffffffffffffffffffffffe +ffffffffffffffffffffffffffffffff +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 \ No newline at end of file Index: tags/R0/sim/Top_PipelinedCipher.do =================================================================== --- tags/R0/sim/Top_PipelinedCipher.do (nonexistent) +++ tags/R0/sim/Top_PipelinedCipher.do (revision 2) @@ -0,0 +1,13 @@ +vlib work +vlog ../rtl/SBox.v +vlog ../rtl/SubBytes.v +vlog ../rtl/ShiftRows.v +vlog ../rtl/MixColumns.v +vlog ../rtl/AddRoundKey.v +vlog ../rtl/Round.v +vlog ../rtl/RoundKeyGen.v +vlog ../rtl/KeyExpantion.v +vlog ../rtl/Top_PipelinedCipher.v +vlog ../sim/Top_PipelinedCipher_tb.v +vsim -novopt Top_PipelinedCipher_tb +run -a Index: tags/R0/sim/timesim.do =================================================================== --- tags/R0/sim/timesim.do (nonexistent) +++ tags/R0/sim/timesim.do (revision 2) @@ -0,0 +1,4 @@ +vlog Top_PipelinedCipher_tb.v +vlog ../syn/netgen/par/Top_PipelinedCipher_timesim.v +vsim +define+GATES -novopt -sdfmax /U/=../syn/netgen/par/Top_PipelinedCipher_timesim.sdf -novopt work.Top_PipelinedCipher_tb glbl +run -a \ No newline at end of file Index: tags/R0/sim/topcipher_test_outputs.txt =================================================================== --- tags/R0/sim/topcipher_test_outputs.txt (nonexistent) +++ tags/R0/sim/topcipher_test_outputs.txt (revision 2) @@ -0,0 +1,284 @@ +0336763e966d92595a567cc9ce537f5e +a9a1631bf4996954ebc093957b234589 +ff4f8391a6a40ca5b25d23bedd44a597 +dc43be40be0e53712f7e2bf5ca707209 +92beedab1895a94faa69b632e5cc47ce +459264f4798f6a78bacb89c15ed3d601 +08a4e2efec8a8e3312ca7460b9040bbf +6d251e6944b051e04eaa6fb4dbf78465 +6e29201190152df4ee058139def610bb +c3b44b95d9d2f25670eee9a0de099fa3 +5d9b05578fc944b3cf1ccf0e746cd581 +f7efc89d5dba578104016ce5ad659c05 +0306194f666d183624aa230a8b264ae7 +858075d536d79ccee571f7d7204b1f67 +35870c6a57e9e92314bcb8087cde72ce +6c68e9be5ec41e22c825b7c7affb4363 +f5df39990fc688f1b07224cc03e86cea +bba071bcb470f8f6586e5d3add18bc66 +43c9f7e62f5d288bb27aa40ef8fe1ea8 +3580d19cff44f1014a7c966a69059de5 +806da864dd29d48deafbe764f8202aef +a303d940ded8f0baff6f75414cac5243 +c2dabd117f8a3ecabfbb11d12194d9d0 +fff60a4740086b3b9c56195b98d91a7b +8146a08e2357f0caa30ca8c94d1a0544 +4b98e06d356deb07ebb824e5713f7be3 +7a20a53d460fc9ce0423a7a0764c6cf2 +f4a70d8af877f9b02b4c40df57d45b17 +3ad78e726c1ec02b7ebfe92b23d9ec34 +aae5939c8efdf2f04e60b9fe7117b2c2 +f031d4d74f5dcbf39daaf8ca3af6e527 +96d9fd5cc4f07441727df0f33e401a36 +30ccdb044646d7e1f3ccea3dca08b8c0 +16ae4ce5042a67ee8e177b7c587ecc82 +b6da0bb11a23855d9c5cb1b4c6412e0a +db4f1aa530967d6732ce4715eb0ee24b +a81738252621dd180a34f3455b4baa2f +77e2b508db7fd89234caf7939ee5621a +b8499c251f8442ee13f0933b688fcd19 +965135f8a81f25c9d630b17502f68e53 +8b87145a01ad1c6cede995ea3670454f +8eae3b10a0c8ca6d1d3b0fa61e56b0b2 +64b4d629810fda6bafdf08f3b0d8d2c5 +d7e5dbd3324595f8fdc7d7c571da6c2a +f3f72375264e167fca9de2c1527d9606 +8ee79dd4f401ff9b7ea945d86666c13b +dd35cea2799940b40db3f819cb94c08b +6941cb6b3e08c2b7afa581ebdd607b87 +2c20f439f6bb097b29b8bd6d99aad799 +625d01f058e565f77ae86378bd2c49b3 +c0b5fd98190ef45fbb4301438d095950 +13001ff5d99806efd25da34f56be854b +3b594c60f5c8277a5113677f94208d82 +e9c0fc1818e4aa46bd2e39d638f89e05 +f8023ee9c3fdc45a019b4e985c7e1a54 +35f40182ab4662f3023baec1ee796b57 +3aebbad7303649b4194a6945c6cc3694 +a2124bea53ec2834279bed7f7eb0f938 +b9fb4399fa4facc7309e14ec98360b0a +c26277437420c5d634f715aea81a9132 +171a0e1b2dd424f0e089af2c4c10f32f +7cadbe402d1b208fe735edce00aee7ce +43b02ff929a1485af6f5c6d6558baa0f +092faacc9bf43508bf8fa8613ca75dea +cb2bf8280f3f9742c7ed513fe802629c +215a41ee442fa992a6e323986ded3f68 +f21e99cf4f0f77cea836e11a2fe75fb1 +95e3a0ca9079e646331df8b4e70d2cd6 +4afe7f120ce7613f74fc12a01a828073 +827f000e75e2c8b9d479beed913fe678 +35830c8e7aaefe2d30310ef381cbf691 +191aa0f2c8570144f38657ea4085ebe5 +85062c2c909f15d9269b6c18ce99c4f0 +678034dc9e41b5a560ed239eeab1bc78 +c2f93a4ce5ab6d5d56f1b93cf19911c1 +1c3112bcb0c1dcc749d799743691bf82 +00c55bd75c7f9c881989d3ec1911c0d4 +ea2e6b5ef182b7dff3629abd6a12045f +22322327e01780b17397f24087f8cc6f +c9cacb5cd11692c373b2411768149ee7 +a18e3dbbca577860dab6b80da3139256 +79b61c37bf328ecca8d743265a3d425c +d2d99c6bcc1f06fda8e27e8ae3f1ccc7 +1bfd4b91c701fd6b61b7f997829d663b +11005d52f25f16bdc9545a876a63490a +3a4d354f02bb5a5e47d39666867f246a +d451b8d6e1e1a0ebb155fbbf6e7b7dc3 +6898d4f42fa7ba6a10ac05e87b9f2080 +b611295e739ca7d9b50f8e4c0e754a3f +7d33fc7d8abe3ca1936759f8f5deaf20 +3b5e0f566dc96c298f0c12637539b25c +f807c3e7985fe0f5a50e2cdb25c5109e +41f992a856fb278b389a62f5d274d7e9 +10d3ed7a6fe15ab4d91acbc7d0767ab1 +21feecd45b2e675973ac33bf0c5424fc +1480cb3955ba62d09eea668f7c708817 +66404033d6b72b609354d5496e7eb511 +1c317a220a7d700da2b1e075b00266e1 +ab3b89542233f1271bf8fd0c0f403545 +d93eae966fac46dca927d6b114fa3f9e +1bdec521316503d9d5ee65df3ea94ddf +eef456431dea8b4acf83bdae3717f75f +06f2519a2fafaa596bfef5cfa15c21b9 +251a7eac7e2fe809e4aa8d0d7012531a +3bffc16e4c49b268a20f8d96a60b4058 +e886f9281999c5bb3b3e8862e2f7c988 +563bf90d61beef39f48dd625fcef1361 +4d37c850644563c69fd0acd9a049325b +b87c921b91829ef3b13ca541ee1130a6 +2e65eb6b6ea383e109accce8326b0393 +9ca547f7439edc3e255c0f4d49aa8990 +a5e652614c9300f37816b1f9fd0c87f9 +14954f0b4697776f44494fe458d814ed +7c8d9ab6c2761723fe42f8bb506cbcf7 +db7e1932679fdd99742aab04aa0d5a80 +4c6a1c83e568cd10f27c2d73ded19c28 +90ecbe6177e674c98de412413f7ac915 +90684a2ac55fe1ec2b8ebd5622520b73 +7472f9a7988607ca79707795991035e6 +56aff089878bf3352f8df172a3ae47d8 +65c0526cbe40161b8019a2a3171abd23 +377be0be33b4e3e310b4aabda173f84f +9402e9aa6f69de6504da8d20c4fcaa2f +123c1f4af313ad8c2ce648b2e71fb6e1 +1ffc626d30203dcdb0019fb80f726cf4 +76da1fbe3a50728c50fd2e621b5ad885 +082eb8be35f442fb52668e16a591d1d6 +e656f9ecf5fe27ec3e4a73d00c282fb3 +2ca8209d63274cd9a29bb74bcd77683a +79bf5dce14bb7dd73a8e3611de7ce026 +3c849939a5d29399f344c4a0eca8a576 +ed3c0a94d59bece98835da7aa4f07ca2 +63919ed4ce10196438b6ad09d99cd795 +7678f3a833f19fea95f3c6029e2bc610 +3aa426831067d36b92be7c5f81c13c56 +9272e2d2cdd11050998c845077a30ea0 +088c4b53f5ec0ff814c19adae7f6246c +4010a5e401fdf0a0354ddbcc0d012b17 +a87a385736c0a6189bd6589bd8445a93 +545f2b83d9616dccf60fa9830e9cd287 +4b706f7f92406352394037a6d4f4688d +b7972b3941c44b90afa7b264bfba7387 +6f45732cf10881546f0fd23896d2bb60 +2e3579ca15af27f64b3c955a5bfc30ba +34a2c5a91ae2aec99b7d1b5fa6780447 +a4d6616bd04f87335b0e53351227a9ee +7f692b03945867d16179a8cefc83ea3f +3bd141ee84a0e6414a26e7a4f281f8a2 +d1788f572d98b2b16ec5d5f3922b99bc +0833ff6f61d98a57b288e8c3586b85a6 +8568261797de176bf0b43becc6285afb +f9b0fda0c4a898f5b9e6f661c4ce4d07 +8ade895913685c67c5269f8aae42983e +39bde67d5c8ed8a8b1c37eb8fa9f5ac0 +5c005e72c1418c44f569f2ea33ba54f3 +3f5b8cc9ea855a0afa7347d23e8d664e +0edd33d3c621e546455bd8ba1418bec8 +4bc3f883450c113c64ca42e1112a9e87 +72a1da770f5d7ac4c9ef94d822affd97 +970014d634e2b7650777e8e84d03ccd8 +f17e79aed0db7e279e955b5f493875a7 +9ed5a75136a940d0963da379db4af26a +c4295f83465c7755e8fa364bac6a7ea5 +b1d758256b28fd850ad4944208cf1155 +42ffb34c743de4d88ca38011c990890b +9958f0ecea8b2172c0c1995f9182c0f3 +956d7798fac20f82a8823f984d06f7f5 +a01bf44f2d16be928ca44aaf7b9b106b +b5f1a33e50d40d103764c76bd4c6b6f8 +2637050c9fc0d4817e2d69de878aee8d +113ecbe4a453269a0dd26069467fb5b5 +97d0754fe68f11b9e375d070a608c884 +c6a0b3e998d05068a5399778405200b4 +df556a33438db87bc41b1752c55e5e49 +90fb128d3a1af6e548521bb962bf1f05 +26298e9c1db517c215fadfb7d2a8d691 +a6cb761d61f8292d0df393a279ad0380 +12acd89b13cd5f8726e34d44fd486108 +95b1703fc57ba09fe0c3580febdd7ed4 +de11722d893e9f9121c381becc1da59a +6d114ccb27bf391012e8974c546d9bf2 +5ce37e17eb4646ecfac29b9cc38d9340 +18c1b6e2157122056d0243d8a165cddb +99693e6a59d1366c74d823562d7e1431 +6c7c64dc84a8bba758ed17eb025a57e3 +e17bc79f30eaab2fac2cbbe3458d687a +1114bc2028009b923f0b01915ce5e7c4 +9c28524a16a1e1c1452971caa8d13476 +ed62e16363638360fdd6ad62112794f0 +5a8688f0b2a2c16224c161658ffd4044 +23f710842b9bb9c32f26648c786807ca +44a98bf11e163f632c47ec6a49683a89 +0f18aff94274696d9b61848bd50ac5e5 +82408571c3e2424540207f833b6dda69 +303ff996947f0c7d1f43c8f3027b9b75 +7df4daf4ad29a3615a9b6ece5c99518a +c72954a48d0774db0b4971c526260415 +1df9b76112dc6531e07d2cfda04411f0 +8e4d8e699119e1fc87545a647fb1d34f +e6c4807ae11f36f091c57d9fb68548d1 +8ebf73aad49c82007f77a5c1ccec6ab4 +4fb288cc2040049001d2c7585ad123fc +04497110efb9dceb13e2b13fb4465564 +75550e6cb5a88e49634c9ab69eda0430 +b6768473ce9843ea66a81405dd50b345 +cb2f430383f9084e03a653571e065de6 +ff4e66c07bae3e79fb7d210847a3b0ba +7b90785125505fad59b13c186dd66ce3 +8b527a6aebdaec9eaef8eda2cb7783e5 +43fdaf53ebbc9880c228617d6a9b548b +53786104b9744b98f052c46f1c850d0b +b5ab3013dd1e61df06cbaf34ca2aee78 +7470469be9723030fdcc73a8cd4fbb10 +a35a63f5343ebe9ef8167bcb48ad122e +fd8687f0757a210e9fdf181204c30863 +7a181e84bd5457d26a88fbae96018fb0 +653317b9362b6f9b9e1a580e68d494b5 +995c9dc0b689f03c45867b5faa5c18d1 +77a4d96d56dda398b9aabecfc75729fd +84be19e053635f09f2665e7bae85b42d +32cd652842926aea4aa6137bb2be2b5e +493d4a4f38ebb337d10aa84e9171a554 +d9bff7ff454b0ec5a4a2a69566e2cb84 +3535d565ace3f31eb249ba2cc6765d7a +f60e91fc3269eecf3231c6e9945697c6 +ab69cfadf51f8e604d9cc37182f6635a +7866373f24a0b6ed56e0d96fcdafb877 +1ea448c2aac954f5d812e9d78494446a +acc5599dd8ac02239a0fef4a36dd1668 +d8764468bb103828cf7e1473ce895073 +1b0d02893683b9f180458e4aa6b73982 +96d9b017d302df410a937dcdb8bb6e43 +ef1623cc44313cff440b1594a7e21cc6 +284ca2fa35807b8b0ae4d19e11d7dbd7 +f2e976875755f9401d54f36e2a23a594 +ec198a18e10e532403b7e20887c8dd80 +545d50ebd919e4a6949d96ad47e46a80 +dbdfb527060e0a71009c7bb0c68f1d44 +9cfa1322ea33da2173a024f2ff0d896d +8785b1a75b0f3bd958dcd0e29318c521 +38f67b9e98e4a97b6df030a9fcdd0104 +192afffb2c880e82b05926d0fc6c448b +6a7980ce7b105cf530952d74daaf798c +ea3695e1351b9d6858bd958cf513ef6c +6da0490ba0ba0343b935681d2cce5ba1 +f0ea23af08534011c60009ab29ada2f1 +ff13806cf19cc38721554d7c0fcdcd4b +6838af1f4f69bae9d85dd188dcdf0688 +36cf44c92d550bfb1ed28ef583ddf5d7 +d06e3195b5376f109d5c4ec6c5d62ced +c440de014d3d610707279b13242a5c36 +f0c5c6ffa5e0bd3a94c88f6b6f7c16b9 +3e40c3901cd7effc22bffc35dee0b4d9 +b63305c72bedfab97382c406d0c49bc6 +36bbaab22a6bd4925a99a2b408d2dbae +307c5b8fcd0533ab98bc51e27a6ce461 +829c04ff4c07513c0b3ef05c03e337b5 +f17af0e895dda5eb98efc68066e84c54 +277167f3812afff1ffacb4a934379fc3 +2cb1dc3a9c72972e425ae2ef3eb597cd +36aeaa3a213e968d4b5b679d3a2c97fe +9241daca4fdd034a82372db50e1a0f3f +c14574d9cd00cf2b5a7f77e53cd57885 +793de39236570aba83ab9b737cb521c9 +16591c0f27d60e29b85a96c33861a7ef +44fb5c4d4f5cb79be5c174a3b1c97348 +674d2b61633d162be59dde04222f4740 +b4750ff263a65e1f9e924ccfd98f3e37 +62d0662d6eaeddedebae7f7ea3a4f6b6 +70c46bb30692be657f7eaa93ebad9897 +323994cfb9da285a5d9642e1759b224a +1dbf57877b7b17385c85d0b54851e371 +dfa5c097cdc1532ac071d57b1d28d1bd +3a0c53fa37311fc10bd2a9981f513174 +ba4f970c0a25c41814bdae2e506be3b4 +2dce3acb727cd13ccd76d425ea56e4f6 +5160474d504b9b3eefb68d35f245f4b3 +41a8a947766635dec37553d9a6c0cbb7 +25d6cfe6881f2bf497dd14cd4ddf445b +41c78c135ed9e98c096640647265da1e +5a4d404d8917e353e92a21072c3b2305 +02bc96846b3fdc71643f384cd3cc3eaf +9ba4a9143f4e5d4048521c4f8877d88e +a1f6258c877d5fcd8964484538bfc92c \ No newline at end of file Index: tags/R0/syn/setup.tcl =================================================================== --- tags/R0/syn/setup.tcl (nonexistent) +++ tags/R0/syn/setup.tcl (revision 2) @@ -0,0 +1,493 @@ +# +# Project automation script for AES +# +# Created for ISE version 12.1 +# +# This file contains several Tcl procedures (procs) that you can use to automate +# your project by running from xtclsh or the Project Navigator Tcl console. +# If you load this file (using the Tcl command: source AES.tcl), then you can +# run any of the procs included here. +# +# This script is generated assuming your project has HDL sources. +# Several of the defined procs won't apply to an EDIF or NGC based project. +# If that is the case, simply remove them from this script. +# +# You may also edit any of these procs to customize them. See comments in each +# proc for more instructions. +# +# This file contains the following procedures: +# +# Top Level procs (meant to be called directly by the user): +# run_process: you can use this top-level procedure to run any processes +# that you choose to by adding and removing comments, or by +# adding new entries. +# rebuild_project: you can alternatively use this top-level procedure +# to recreate your entire project, and the run selected processes. +# +# Lower Level (helper) procs (called under in various cases by the top level procs): +# show_help: print some basic information describing how this script works +# add_source_files: adds the listed source files to your project. +# set_project_props: sets the project properties that were in effect when this +# script was generated. +# create_libraries: creates and adds file to VHDL libraries that were defined when +# this script was generated. +# set_process_props: set the process properties as they were set for your project +# when this script was generated. +# + +set myProject "AES" +set myScript "setup.tcl" + +# +# Main (top-level) routines +# + +# +# run_process +# This procedure is used to run processes on an existing project. You may comment or +# uncomment lines to control which processes are run. This routine is set up to run +# the Implement Design and Generate Programming File processes by default. This proc +# also sets process properties as specified in the "set_process_props" proc. Only +# those properties which have values different from their current settings in the project +# file will be modified in the project. +# +proc run_process {} { + + global myScript + global myProject + + ## put out a 'heartbeat' - so we know something's happening. + puts "\n$myScript: running ($myProject)...\n" + + if { ! [ open_project ] } { + return false + } + + set_process_props + # + # Remove the comment characters (#'s) to enable the following commands + process run "Synthesize" + process run "Translate" + process run "Map" + process run "Place & Route" + process run "Generate Post-Place & Route Simulation Model" + # + puts "Running 'Implement Design'" + if { ! [ process run "Implement Design" ] } { + puts "$myScript: Implementation run failed, check run output for details." + project close + return + } + puts "Running 'Generate Programming File'" + if { ! [ process run "Generate Programming File" ] } { + puts "$myScript: Generate Programming File run failed, check run output for details." + project close + return + } + + puts "Run completed." + project close + +} + +# +# rebuild_project +# +# This procedure renames the project file (if it exists) and recreates the project. +# It then sets project properties and adds project sources as specified by the +# set_project_props and add_source_files support procs. It recreates VHDL libraries +# and partitions as they existed at the time this script was generated. +# +# It then calls run_process to set process properties and run selected processes. +# +proc rebuild_project {} { + + global myScript + global myProject + + project close + ## put out a 'heartbeat' - so we know something's happening. + puts "\n$myScript: Rebuilding ($myProject)...\n" + + set proj_exts [ list ise xise gise ] + foreach ext $proj_exts { + set proj_name "${myProject}.$ext" + if { [ file exists $proj_name ] } { + file delete $proj_name + } + } + + project new $myProject + set_project_props + add_source_files + create_libraries + puts "$myScript: project rebuild completed." + + run_process + +} + +# +# Support Routines +# + +# +# show_help: print information to help users understand the options available when +# running this script. +# +proc show_help {} { + + global myScript + + puts "" + puts "usage: xtclsh $myScript " + puts " or you can run xtclsh and then enter 'source $myScript'." + puts "" + puts "options:" + puts " run_process - set properties and run processes." + puts " rebuild_project - rebuild the project from scratch and run processes." + puts " set_project_props - set project properties (device, speed, etc.)" + puts " add_source_files - add source files" + puts " create_libraries - create vhdl libraries" + puts " set_process_props - set process property values" + puts " show_help - print this message" + puts "" +} + +proc open_project {} { + + global myScript + global myProject + + if { ! [ file exists ${myProject}.xise ] } { + ## project file isn't there, rebuild it. + puts "Project $myProject not found. Use project_rebuild to recreate it." + return false + } + + project open $myProject + + return true + +} +# +# set_project_props +# +# This procedure sets the project properties as they were set in the project +# at the time this script was generated. +# +proc set_project_props {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Setting project properties..." + + project set family "Virtex6" + project set device "xc6vcx240t" + project set package "ff784" + project set speed "-2" + project set top_level_module_type "HDL" + project set synthesis_tool "XST (VHDL/Verilog)" + project set simulator "Modelsim-SE Verilog" + project set "Preferred Language" "Verilog" + project set "Enable Message Filtering" "false" + +} + + +# +# add_source_files +# +# This procedure add the source files that were known to the project at the +# time this script was generated. +# +proc add_source_files {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Adding sources to project..." + + xfile add "../rtl/AddRoundKey.v" + xfile add "../rtl/KeyExpantion.v" + xfile add "../rtl/MixColumns.v" + xfile add "../rtl/Round.v" + xfile add "../rtl/RoundKeyGen.v" + xfile add "../rtl/SBox.v" + xfile add "../rtl/ShiftRows.v" + xfile add "../rtl/SubBytes.v" + xfile add "../rtl/Top_PipelinedCipher.v" + xfile add "./Top_PipelinedCipher.ucf" + + # Set the Top Module as well... + project set top "Top_PipelinedCipher" + + puts "$myScript: project sources reloaded." + +} ; # end add_source_files + +# +# create_libraries +# +# This procedure defines VHDL libraries and associates files with those libraries. +# It is expected to be used when recreating the project. Any libraries defined +# when this script was generated are recreated by this procedure. +# +proc create_libraries {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: Creating libraries..." + + + # must close the project or library definitions aren't saved. + project save + +} ; # end create_libraries + +# +# set_process_props +# +# This procedure sets properties as requested during script generation (either +# all of the properties, or only those modified from their defaults). +# +proc set_process_props {} { + + global myScript + + if { ! [ open_project ] } { + return false + } + + puts "$myScript: setting process properties..." + + project set "Compiled Library Directory" "\$XILINX//" + project set "Global Optimization" "Off" -process "Map" + project set "Use DSP Block" "Auto" -process "Synthesize - XST" + project set "Enable Cyclic Redundancy Checking (CRC)" "true" -process "Generate Programming File" + project set "Configuration Rate" "2" -process "Generate Programming File" + project set "Pack I/O Registers/Latches into IOBs" "Off" -process "Map" + project set "Place And Route Mode" "Route Only" -process "Place & Route" + project set "Number of Clock Buffers" "32" -process "Synthesize - XST" + project set "Max Fanout" "100000" -process "Synthesize - XST" + project set "Use Clock Enable" "Auto" -process "Synthesize - XST" + project set "Use Synchronous Reset" "Auto" -process "Synthesize - XST" + project set "Use Synchronous Set" "Auto" -process "Synthesize - XST" + project set "Enable Hardware Co-Simulation" "false" + project set "Filter Files From Compile Order" "true" + #project set "Use Custom Project File" "false" -process "Post-Map Check Syntax" + #project set "Use Custom Project File" "false" -process "Post-Place & Route Check Syntax" + #project set "Use Custom Project File" "false" -process "Post-Translate Check Syntax" + project set "Last Applied Goal" "Balanced" + project set "Last Applied Strategy" "Xilinx Default (unlocked)" + project set "Last Unlock Status" "false" + project set "Manual Compile Order" "false" + project set "Placer Effort Level" "High" -process "Map" + project set "Extra Cost Tables" "0" -process "Map" + project set "LUT Combining" "Off" -process "Map" + project set "Combinatorial Logic Optimization" "false" -process "Map" + project set "Starting Placer Cost Table (1-100)" "1" -process "Map" + project set "Power Reduction" "Off" -process "Map" + project set "Register Duplication" "Off" -process "Map" + project set "Project Generator" "ProjNav" + project set "Property Specification in Project File" "Store all values" + project set "Reduce Control Sets" "Auto" -process "Synthesize - XST" + project set "Selected Module Instance Name" "/Top_PipelinedCipher_tb" + project set "Shift Register Minimum Size" "2" -process "Synthesize - XST" + project set "Case Implementation Style" "None" -process "Synthesize - XST" + project set "Mux Extraction" "Yes" + project set "RAM Extraction" "true" -process "Synthesize - XST" + project set "ROM Extraction" "true" -process "Synthesize - XST" + project set "FSM Encoding Algorithm" "Auto" -process "Synthesize - XST" + project set "Optimization Goal" "Speed" -process "Synthesize - XST" + project set "Optimization Effort" "Normal" -process "Synthesize - XST" + project set "Resource Sharing" "true" -process "Synthesize - XST" + project set "Shift Register Extraction" "true" -process "Synthesize - XST" + project set "User Browsed Strategy Files" "" + project set "VHDL Source Analysis Standard" "VHDL-93" + project set "Working Directory" "." + project set "JTAG to System Monitor Connection" "Enable" -process "Generate Programming File" + project set "Other Bitgen Command Line Options" "" -process "Generate Programming File" + project set "Generate Detailed Package Parasitics" "false" -process "Generate IBIS Model" + project set "Maximum Signal Name Length" "20" -process "Generate IBIS Model" + project set "Show All Models" "false" -process "Generate IBIS Model" + project set "Target UCF File Name" "" -process "Back-annotate Pin Locations" + project set "Ignore User Timing Constraints" "false" -process "Map" + project set "Use RLOC Constraints" "Yes" -process "Map" + project set "Other Map Command Line Options" "" -process "Map" + project set "Use LOC Constraints" "true" -process "Translate" + project set "Other Ngdbuild Command Line Options" "" -process "Translate" + project set "Ignore User Timing Constraints" "false" -process "Place & Route" + project set "Other Place & Route Command Line Options" "" -process "Place & Route" + project set "BPI Reads Per Page" "1" -process "Generate Programming File" + project set "Configuration Pin Busy" "Pull Up" -process "Generate Programming File" + project set "Configuration Clk (Configuration Pins)" "Pull Up" -process "Generate Programming File" + project set "UserID Code (8 Digit Hexadecimal)" "0xFFFFFFFF" -process "Generate Programming File" + project set "Configuration Pin CS" "Pull Up" -process "Generate Programming File" + project set "DCI Update Mode" "As Required" -process "Generate Programming File" + project set "Configuration Pin DIn" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Done" "Pull Up" -process "Generate Programming File" + project set "Create ASCII Configuration File" "false" -process "Generate Programming File" + project set "Create Binary Configuration File" "false" -process "Generate Programming File" + project set "Create Bit File" "true" -process "Generate Programming File" + project set "Enable BitStream Compression" "false" -process "Generate Programming File" + project set "Run Design Rules Checker (DRC)" "true" -process "Generate Programming File" + project set "Create IEEE 1532 Configuration File" "false" -process "Generate Programming File" + project set "Create ReadBack Data Files" "false" -process "Generate Programming File" + project set "Configuration Pin HSWAPEN" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Init" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M0" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M1" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin M2" "Pull Up" -process "Generate Programming File" + project set "Configuration Pin Program" "Pull Up" -process "Generate Programming File" + project set "Power Down Device if Over Safe Temperature" "false" -process "Generate Programming File" + project set "Configuration Pin RdWr" "Pull Up" -process "Generate Programming File" + project set "Starting Address for Fallback Configuration" "0x00000000" -process "Generate Programming File" + project set "JTAG Pin TCK" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TDI" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TDO" "Pull Up" -process "Generate Programming File" + project set "JTAG Pin TMS" "Pull Up" -process "Generate Programming File" + project set "Unused IOB Pins" "Pull Down" -process "Generate Programming File" + project set "Watchdog Timer Mode" "Off" -process "Generate Programming File" + project set "Security" "Enable Readback and Reconfiguration" -process "Generate Programming File" + project set "Done (Output Events)" "Default (4)" -process "Generate Programming File" + project set "Drive Done Pin High" "false" -process "Generate Programming File" + project set "Enable Outputs (Output Events)" "Default (5)" -process "Generate Programming File" + project set "Wait for DCI Match (Output Events)" "Auto" -process "Generate Programming File" + project set "Wait for PLL Lock (Output Events)" "No Wait" -process "Generate Programming File" + project set "Release Write Enable (Output Events)" "Default (6)" -process "Generate Programming File" + project set "FPGA Start-Up Clock" "CCLK" -process "Generate Programming File" + project set "Enable Internal Done Pipe" "false" -process "Generate Programming File" + project set "Allow Logic Optimization Across Hierarchy" "false" -process "Map" + project set "Maximum Compression" "false" -process "Map" + project set "Generate Detailed MAP Report" "false" -process "Map" + project set "Map Slice Logic into Unused Block RAMs" "false" -process "Map" + project set "Perform Timing-Driven Packing and Placement" "false" + project set "Trim Unconnected Signals" "true" -process "Map" + project set "Create I/O Pads from Ports" "false" -process "Translate" + project set "Macro Search Path" "" -process "Translate" + project set "Netlist Translation Type" "Timestamp" -process "Translate" + project set "User Rules File for Netlister Launcher" "" -process "Translate" + project set "Allow Unexpanded Blocks" "false" -process "Translate" + project set "Allow Unmatched LOC Constraints" "false" -process "Translate" + project set "Allow Unmatched Timing Group Constraints" "false" -process "Translate" + project set "Add I/O Buffers" "true" -process "Synthesize - XST" + project set "Global Optimization Goal" "AllClockNets" -process "Synthesize - XST" + project set "Keep Hierarchy" "No" -process "Synthesize - XST" + project set "Register Balancing" "No" -process "Synthesize - XST" + project set "Register Duplication" "true" -process "Synthesize - XST" + project set "Asynchronous To Synchronous" "false" -process "Synthesize - XST" + project set "Automatic BRAM Packing" "false" -process "Synthesize - XST" + project set "BRAM Utilization Ratio" "100" -process "Synthesize - XST" + project set "Bus Delimiter" "<>" -process "Synthesize - XST" + project set "Case" "Maintain" -process "Synthesize - XST" + project set "Cores Search Directories" "" -process "Synthesize - XST" + project set "Cross Clock Analysis" "false" -process "Synthesize - XST" + project set "DSP Utilization Ratio" "100" -process "Synthesize - XST" + project set "Equivalent Register Removal" "true" -process "Synthesize - XST" + project set "FSM Style" "LUT" -process "Synthesize - XST" + project set "Generate RTL Schematic" "Yes" -process "Synthesize - XST" + project set "Generics, Parameters" "" -process "Synthesize - XST" + project set "Hierarchy Separator" "/" -process "Synthesize - XST" + project set "HDL INI File" "" -process "Synthesize - XST" + project set "LUT Combining" "Auto" -process "Synthesize - XST" + project set "Library Search Order" "" -process "Synthesize - XST" + project set "Netlist Hierarchy" "As Optimized" -process "Synthesize - XST" + project set "Optimize Instantiated Primitives" "false" -process "Synthesize - XST" + project set "Pack I/O Registers into IOBs" "Auto" -process "Synthesize - XST" + project set "Power Reduction" "false" -process "Synthesize - XST" + project set "Read Cores" "true" -process "Synthesize - XST" + project set "LUT-FF Pairs Utilization Ratio" "100" -process "Synthesize - XST" + project set "Use Synthesis Constraints File" "true" -process "Synthesize - XST" + project set "Verilog Include Directories" "" -process "Synthesize - XST" + project set "Verilog 2001" "true" + project set "Verilog Macros" "" -process "Synthesize - XST" + project set "Write Timing Constraints" "false" -process "Synthesize - XST" + project set "Other XST Command Line Options" "" -process "Synthesize - XST" + project set "Timing Mode" "Performance Evaluation" -process "Map" + project set "Generate Asynchronous Delay Report" "false" -process "Place & Route" + project set "Generate Clock Region Report" "false" -process "Place & Route" + project set "Generate Post-Place & Route Power Report" "false" -process "Place & Route" + project set "Generate Post-Place & Route Simulation Model" "false" -process "Place & Route" + project set "Power Reduction" "false" -process "Place & Route" + project set "Place & Route Effort Level (Overall)" "High" -process "Place & Route" + project set "Auto Implementation Compile Order" "true" + project set "Auto Implementation Top" "false" + project set "Equivalent Register Removal" "true" -process "Map" + project set "Placer Extra Effort" "None" -process "Map" + project set "Power Activity File" "" -process "Map" + project set "Retiming" "false" -process "Map" + project set "Synthesis Constraints File" "" -process "Synthesize - XST" + project set "RAM Style" "Auto" -process "Synthesize - XST" + project set "Verbose Property Persistence" "true" + project set "Encrypt Bitstream" "false" -process "Generate Programming File" + project set "Output File Name" "Top_PipelinedCipher" -process "Generate IBIS Model" + project set "Enable Multi-Threading" "Off" -process "Place & Route" + project set "Timing Mode" "Performance Evaluation" -process "Place & Route" + project set "Cycles for First BPI Page Read" "1" -process "Generate Programming File" + project set "Enable Debugging of Serial Mode BitStream" "false" -process "Generate Programming File" + project set "Create Logic Allocation File" "false" -process "Generate Programming File" + project set "Create Mask File" "false" -process "Generate Programming File" + project set "Watchdog Timer Value" "0x000000" -process "Generate Programming File" + project set "Allow SelectMAP Pins to Persist" "false" -process "Generate Programming File" + project set "Enable Multi-Threading" "Off" -process "Map" + project set "Move First Flip-Flop Stage" "true" -process "Synthesize - XST" + project set "Move Last Flip-Flop Stage" "true" -process "Synthesize - XST" + project set "ROM Style" "Auto" -process "Synthesize - XST" + project set "Safe Implementation" "No" -process "Synthesize - XST" + project set "AES Initial Vector" "" -process "Generate Programming File" + project set "Power Activity File" "" -process "Place & Route" + project set "Extra Effort (Highest PAR level only)" "None" -process "Place & Route" + project set "HMAC Key (Hex String)" "" -process "Generate Programming File" + project set "Encrypt Key Select" "BBRAM" -process "Generate Programming File" + project set "AES Key (Hex String)" "" -process "Generate Programming File" + project set "Input Encryption Key File" "" -process "Generate Programming File" + project set "Fallback Reconfiguration" "Enable" -process "Generate Programming File" + project set "Automatically Insert glbl Module in the Netlist" "true" -process "Generate Post-Place & Route Simulation Model" + project set "Include SIMPRIM Models in Verilog File" "true" -process "Generate Post-Place & Route Simulation Model" + project set "Include sdf_annotate task in Verilog File" "false" -process "Generate Post-Place & Route Simulation Model" + + puts "$myScript: project property values set." + +} ; # end set_process_props + +proc main {} { + + if { [llength $::argv] == 0 } { + show_help + return true + } + + foreach option $::argv { + switch $option { + "show_help" { show_help } + "run_process" { run_process } + "rebuild_project" { rebuild_project } + "set_project_props" { set_project_props } + "add_source_files" { add_source_files } + "create_libraries" { create_libraries } + "set_process_props" { set_process_props } + default { puts "unrecognized option: $option"; show_help } + } + } +} + +if { $tcl_interactive } { + show_help +} else { + if {[catch {main} result]} { + puts "$myScript failed: $result." + } +} + Index: tags/R0/syn/Top_PipelinedCipher.ucf =================================================================== --- tags/R0/syn/Top_PipelinedCipher.ucf (nonexistent) +++ tags/R0/syn/Top_PipelinedCipher.ucf (revision 2) @@ -0,0 +1,4 @@ + +#Created by Constraints Editor (xc6vcx240t-ff784-2) - 2013/06/28 +NET "clk" TNM_NET = clk; +TIMESPEC TS_clk = PERIOD "clk" 5 ns HIGH 50%; Index: tags/R0/syn/run.tcl =================================================================== --- tags/R0/syn/run.tcl (nonexistent) +++ tags/R0/syn/run.tcl (revision 2) @@ -0,0 +1,5 @@ +#put here your project directory +set project_directory . +cd $project_directory +source setup.tcl +rebuild_project \ No newline at end of file Index: tags/R0/syn/readme.txt =================================================================== --- tags/R0/syn/readme.txt (nonexistent) +++ tags/R0/syn/readme.txt (revision 2) @@ -0,0 +1,8 @@ +1-edit run.tcl and replace . with your project directory (that contains tcl files) + +2-edit setup.tcl at line 218 begin to add your files as shown +3-edit setup.tcl at line 230 set your top module + +4-open xilinx bash shell and point to the directory that contains tcl files then write xtclsh +5-write the command: source run.tcl +6-after running all processes the sdf file and the verilog netlist can be found in netgen folder Index: tags/R0/reports/Top_PipelinedCipher_map.mrp =================================================================== --- tags/R0/reports/Top_PipelinedCipher_map.mrp (nonexistent) +++ tags/R0/reports/Top_PipelinedCipher_map.mrp (revision 2) @@ -0,0 +1,581 @@ +Release 12.1 Map M.53d (nt64) +Xilinx Mapping Report File for Design 'Top_PipelinedCipher' + +Design Information +------------------ +Command Line : map -intstyle ise -p xc6vcx240t-ff784-2 -w -ol high -t 1 -xt 0 +-register_duplication off -global_opt off -ir off -pr off -lc off -power off -o +Top_PipelinedCipher_map.ncd Top_PipelinedCipher.ngd Top_PipelinedCipher.pcf +Target Device : xc6vcx240t +Target Package : ff784 +Target Speed : -2 +Mapper Version : virtex6 -- $Revision: 1.52 $ +Mapped Date : Wed Jul 17 15:14:08 2013 + +Design Summary +-------------- +Number of errors: 0 +Number of warnings: 0 +Slice Logic Utilization: + Number of Slice Registers: 10,769 out of 301,440 3% + Number used as Flip Flops: 10,769 + Number used as Latches: 0 + Number used as Latch-thrus: 0 + Number used as AND/OR logics: 0 + Number of Slice LUTs: 12,475 out of 150,720 8% + Number used as logic: 9,842 out of 150,720 6% + Number using O6 output only: 9,081 + Number using O5 output only: 0 + Number using O5 and O6: 761 + Number used as ROM: 0 + Number used as Memory: 0 out of 58,400 0% + Number used exclusively as route-thrus: 2,633 + Number with same-slice register load: 2,633 + Number with same-slice carry load: 0 + Number with other load: 0 + +Slice Logic Distribution: + Number of occupied Slices: 3,214 out of 37,680 8% + Number of LUT Flip Flop pairs used: 12,527 + Number with an unused Flip Flop: 5,031 out of 12,527 40% + Number with an unused LUT: 52 out of 12,527 1% + Number of fully used LUT-FF pairs: 7,444 out of 12,527 59% + Number of unique control sets: 82 + Number of slice register sites lost + to control set restrictions: 7 out of 301,440 1% + + A LUT Flip Flop pair for this architecture represents one LUT paired with + one Flip Flop within a slice. A control set is a unique combination of + clock, reset, set, and enable signals for a registered element. + The Slice Logic Distribution report is not meaningful if the design is + over-mapped for a non-slice resource or if Placement fails. + OVERMAPPING of BRAM resources should be ignored if the design is + over-mapped for a non-BRAM resource or if placement fails. + +IO Utilization: + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of RAMB36E1/FIFO36E1s: 0 out of 416 0% + Number of RAMB18E1/FIFO18E1s: 0 out of 832 0% + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + Number used as BUFGs: 2 + Number used as BUFGCTRLs: 0 + Number of ILOGICE1/ISERDESE1s: 0 out of 720 0% + Number of OLOGICE1/OSERDESE1s: 0 out of 720 0% + Number of BSCANs: 0 out of 4 0% + Number of BUFHCEs: 0 out of 144 0% + Number of BUFOs: 0 out of 36 0% + Number of BUFIODQSs: 0 out of 72 0% + Number of BUFRs: 0 out of 36 0% + Number of CAPTUREs: 0 out of 1 0% + Number of DSP48E1s: 0 out of 768 0% + Number of EFUSE_USRs: 0 out of 1 0% + Number of GTXE1s: 0 out of 12 0% + Number of IBUFDS_GTXE1s: 0 out of 8 0% + Number of ICAPs: 0 out of 2 0% + Number of IDELAYCTRLs: 0 out of 18 0% + Number of IODELAYE1s: 0 out of 720 0% + Number of MMCM_ADVs: 0 out of 12 0% + Number of PCIE_2_0s: 0 out of 2 0% + Number of STARTUPs: 1 out of 1 100% + Number of SYSMONs: 0 out of 1 0% + Number of TEMAC_SINGLEs: 0 out of 1 0% + +Average Fanout of Non-Clock Nets: 7.45 + +Peak Memory Usage: 1019 MB +Total REAL time to MAP completion: 3 mins 28 secs +Total CPU time to MAP completion: 3 mins 19 secs + +Table of Contents +----------------- +Section 1 - Errors +Section 2 - Warnings +Section 3 - Informational +Section 4 - Removed Logic Summary +Section 5 - Removed Logic +Section 6 - IOB Properties +Section 7 - RPMs +Section 8 - Guide Report +Section 9 - Area Group and Partition Summary +Section 10 - Timing Report +Section 11 - Configuration String Information +Section 12 - Control Set Information +Section 13 - Utilization by Hierarchy + +Section 1 - Errors +------------------ + +Section 2 - Warnings +-------------------- +WARNING:Security:42 - Your software subscription period has lapsed. Your current +version of Xilinx tools will continue to function, but you no longer qualify for +Xilinx software updates or new releases. + +Section 3 - Informational +------------------------- +INFO:Security:56 - Part 'xc6vcx240t' is not a WebPack part. +INFO:MapLib:562 - No environment variables are currently set. +INFO:LIT:244 - All of the single ended outputs in this design are using slew + rate limited output drivers. The delay on speed critical single ended outputs + can be dramatically reduced by designating them as fast outputs. +INFO:Pack:1716 - Initializing temperature to 85.000 Celsius. (default - Range: + 0.000 to 85.000 Celsius) +INFO:Pack:1720 - Initializing voltage to 0.950 Volts. (default - Range: 0.950 to + 1.050 Volts) +INFO:Map:215 - The Interim Design Summary has been generated in the MAP Report + (.mrp). +INFO:Pack:1650 - Map created a placed design. + +Section 4 - Removed Logic Summary +--------------------------------- + +Section 5 - Removed Logic +------------------------- + +Section 6 - IOB Properties +-------------------------- + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +| IOB Name | Type | Direction | IO Standard | Diff | Drive | Slew | Reg (s) | Resistor | IOB | +| | | | | Term | Strength | Rate | | | Delay | ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +| cipher_key<0> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<1> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<2> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<3> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<4> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<5> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<6> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<7> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<8> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<9> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<10> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<11> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<12> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<13> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<14> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<15> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<16> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<17> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<18> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<19> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<20> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<21> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<22> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<23> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<24> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<25> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<26> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<27> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<28> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<29> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<30> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<31> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<32> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<33> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<34> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<35> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<36> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<37> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<38> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<39> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<40> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<41> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<42> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<43> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<44> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<45> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<46> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<47> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<48> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<49> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<50> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<51> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<52> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<53> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<54> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<55> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<56> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<57> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<58> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<59> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<60> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<61> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<62> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<63> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<64> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<65> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<66> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<67> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<68> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<69> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<70> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<71> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<72> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<73> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<74> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<75> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<76> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<77> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<78> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<79> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<80> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<81> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<82> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<83> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<84> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<85> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<86> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<87> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<88> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<89> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<90> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<91> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<92> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<93> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<94> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<95> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<96> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<97> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<98> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<99> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<100> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<101> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<102> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<103> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<104> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<105> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<106> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<107> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<108> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<109> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<110> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<111> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<112> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<113> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<114> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<115> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<116> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<117> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<118> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<119> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<120> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<121> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<122> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<123> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<124> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<125> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<126> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_key<127> | IOB | INPUT | LVCMOS25 | | | | | | | +| cipher_text<0> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<3> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<4> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<5> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<6> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<7> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<8> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<9> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<10> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<11> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<12> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<13> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<14> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<15> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<16> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<17> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<18> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<19> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<20> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<21> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<22> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<23> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<24> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<25> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<26> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<27> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<28> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<29> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<30> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<31> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<32> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<33> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<34> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<35> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<36> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<37> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<38> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<39> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<40> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<41> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<42> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<43> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<44> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<45> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<46> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<47> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<48> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<49> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<50> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<51> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<52> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<53> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<54> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<55> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<56> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<57> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<58> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<59> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<60> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<61> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<62> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<63> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<64> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<65> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<66> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<67> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<68> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<69> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<70> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<71> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<72> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<73> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<74> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<75> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<76> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<77> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<78> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<79> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<80> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<81> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<82> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<83> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<84> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<85> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<86> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<87> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<88> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<89> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<90> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<91> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<92> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<93> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<94> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<95> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<96> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<97> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<98> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<99> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<100> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<101> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<102> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<103> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<104> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<105> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<106> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<107> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<108> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<109> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<110> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<111> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<112> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<113> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<114> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<115> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<116> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<117> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<118> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<119> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<120> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<121> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<122> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<123> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<124> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<125> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<126> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipher_text<127> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | +| cipherkey_valid_in | IOB | INPUT | LVCMOS25 | | | | | | | +| clk | IOB | INPUT | LVCMOS25 | | | | | | | +| data_valid_in | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<0> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<1> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<2> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<3> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<4> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<5> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<6> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<7> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<8> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<9> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<10> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<11> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<12> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<13> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<14> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<15> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<16> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<17> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<18> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<19> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<20> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<21> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<22> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<23> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<24> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<25> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<26> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<27> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<28> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<29> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<30> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<31> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<32> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<33> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<34> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<35> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<36> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<37> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<38> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<39> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<40> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<41> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<42> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<43> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<44> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<45> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<46> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<47> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<48> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<49> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<50> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<51> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<52> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<53> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<54> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<55> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<56> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<57> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<58> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<59> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<60> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<61> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<62> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<63> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<64> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<65> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<66> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<67> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<68> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<69> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<70> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<71> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<72> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<73> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<74> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<75> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<76> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<77> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<78> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<79> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<80> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<81> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<82> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<83> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<84> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<85> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<86> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<87> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<88> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<89> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<90> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<91> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<92> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<93> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<94> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<95> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<96> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<97> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<98> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<99> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<100> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<101> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<102> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<103> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<104> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<105> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<106> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<107> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<108> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<109> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<110> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<111> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<112> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<113> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<114> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<115> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<116> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<117> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<118> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<119> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<120> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<121> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<122> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<123> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<124> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<125> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<126> | IOB | INPUT | LVCMOS25 | | | | | | | +| plain_text<127> | IOB | INPUT | LVCMOS25 | | | | | | | +| reset | IOB | INPUT | LVCMOS25 | | | | | | | +| valid_out | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Section 7 - RPMs +---------------- + +Section 8 - Guide Report +------------------------ +Guide not run on this design. + +Section 9 - Area Group and Partition Summary +-------------------------------------------- + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +Area Group Information +---------------------- + + No area groups were found in this design. + +---------------------- + +Section 10 - Timing Report +-------------------------- +A logic-level (pre-route) timing report can be generated by using Xilinx static +timing analysis tools, Timing Analyzer (GUI) or TRCE (command line), with the +mapped NCD and PCF files. Please note that this timing report will be generated +using estimated delay information. For accurate numbers, please generate a +timing report with the post Place and Route NCD file. + +For more information about the Timing Analyzer, consult the Xilinx Timing +Analyzer Reference Manual; for more information about TRCE, consult the Xilinx +Command Line Tools User Guide "TRACE" chapter. + +Section 11 - Configuration String Details +----------------------------------------- +Use the "-detail" map option to print out Configuration Strings + +Section 12 - Control Set Information +------------------------------------ +Use the "-detail" map option to print out Control Set Information. + +Section 13 - Utilization by Hierarchy +------------------------------------- +Use the "-detail" map option to print out the Utilization by Hierarchy section. Index: tags/R0/reports/Top_PipelinedCipher.twr =================================================================== --- tags/R0/reports/Top_PipelinedCipher.twr (nonexistent) +++ tags/R0/reports/Top_PipelinedCipher.twr (revision 2) @@ -0,0 +1,291 @@ +-------------------------------------------------------------------------------- +Release 12.1 Trace (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. + +E:\ISE12\ISE_DS\ISE\bin\nt64\unwrapped\trce.exe -intstyle ise -v 3 -s 2 -n 3 +-fastpaths -xml Top_PipelinedCipher.twx Top_PipelinedCipher.ncd -o +Top_PipelinedCipher.twr Top_PipelinedCipher.pcf -ucf Top_PipelinedCipher.ucf + +Design file: Top_PipelinedCipher.ncd +Physical constraint file: Top_PipelinedCipher.pcf +Device,package,speed: xc6vcx240t,ff784,C,-2 (PRELIMINARY 1.04 2010-04-09) +Report level: verbose report + +Environment Variable Effect +-------------------- ------ +NONE No environment variables were set +-------------------------------------------------------------------------------- + +INFO:Timing:2752 - To get complete path coverage, use the unconstrained paths + option. All paths that are not constrained will be reported in the + unconstrained paths section(s) of the report. +INFO:Timing:3339 - The clock-to-out numbers in this timing report are based on + a 50 Ohm transmission line loading model. For the details of this model, + and for more information on accounting for different loading conditions, + please see the device datasheet. + +================================================================================ +Timing constraint: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; + + 75065 paths analyzed, 74633 endpoints analyzed, 0 failing endpoints + 0 timing errors detected. (0 setup errors, 0 hold errors, 0 component switching limit errors) + Minimum period is 4.952ns. +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 (SLICE_X40Y71.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.048ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 (FF) + Requirement: 5.000ns + Data Path Delay: 4.893ns (Levels of Logic = 0) + Clock Path Skew: -0.024ns (1.569 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X40Y71.CE net (fanout=129) 4.272 U0_ARK/valid_out + SLICE_X40Y71.CLK Tceck 0.284 ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout<0> + ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_0 + ------------------------------------------------- --------------------------- + Total 4.893ns (0.621ns logic, 4.272ns route) + (12.7% logic, 87.3% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 (SLICE_X43Y72.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.150ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 (FF) + Requirement: 5.000ns + Data Path Delay: 4.797ns (Levels of Logic = 0) + Clock Path Skew: -0.018ns (1.575 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X43Y72.CE net (fanout=129) 4.142 U0_ARK/valid_out + SLICE_X43Y72.CLK Tceck 0.318 ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout<1> + ROUND[0].U_ROUND/U_SUB/ROM[4].ROM/dout_1 + ------------------------------------------------- --------------------------- + Total 4.797ns (0.655ns logic, 4.142ns route) + (13.7% logic, 86.3% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 (SLICE_X43Y76.CE), 1 path +-------------------------------------------------------------------------------- +Slack (setup path): 0.159ns (requirement - (data path - clock path skew + uncertainty)) + Source: U0_ARK/valid_out (FF) + Destination: ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 (FF) + Requirement: 5.000ns + Data Path Delay: 4.789ns (Levels of Logic = 0) + Clock Path Skew: -0.017ns (1.576 - 1.593) + Source Clock: clk_BUFGP rising at 0.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.035ns + + Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE + Total System Jitter (TSJ): 0.070ns + Total Input Jitter (TIJ): 0.000ns + Discrete Jitter (DJ): 0.000ns + Phase Error (PE): 0.000ns + + Maximum Data Path at Slow Process Corner: U0_ARK/valid_out to ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X62Y140.AQ Tcko 0.337 U0_ARK/valid_out + U0_ARK/valid_out + SLICE_X43Y76.CE net (fanout=129) 4.134 U0_ARK/valid_out + SLICE_X43Y76.CLK Tceck 0.318 ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout<2> + ROUND[0].U_ROUND/U_SUB/ROM[3].ROM/dout_2 + ------------------------------------------------- --------------------------- + Total 4.789ns (0.655ns logic, 4.134ns route) + (13.7% logic, 86.3% route) + +-------------------------------------------------------------------------------- + +Hold Paths: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; +-------------------------------------------------------------------------------- + +Paths for end point U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 (SLICE_X60Y160.A5), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.006ns (requirement - (clock path skew + uncertainty - data path)) + Source: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 (FF) + Destination: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 (FF) + Requirement: 0.000ns + Data Path Delay: 0.116ns (Levels of Logic = 1) + Clock Path Skew: 0.110ns (0.784 - 0.674) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 to U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X61Y158.BQ Tcko 0.098 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout<4> + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout_4 + SLICE_X60Y160.A5 net (fanout=2) 0.119 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/SUB_U/ROM[0].ROM/dout<4> + SLICE_X60Y160.CLK Tah (-Th) 0.101 U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed<39> + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/temp_round_key<4>1 + U_KEYEXP/ROUND_KEY_GEN[8].RKGEN_U/round_key_delayed_4 + ------------------------------------------------- --------------------------- + Total 0.116ns (-0.003ns logic, 0.119ns route) + (-2.6% logic, 102.6% route) + +-------------------------------------------------------------------------------- + +Paths for end point U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 (SLICE_X40Y160.A5), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.016ns (requirement - (clock path skew + uncertainty - data path)) + Source: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 (FF) + Destination: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 (FF) + Requirement: 0.000ns + Data Path Delay: 0.124ns (Levels of Logic = 1) + Clock Path Skew: 0.108ns (0.748 - 0.640) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 to U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X40Y159.CQ Tcko 0.115 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage<14> + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage_12 + SLICE_X40Y160.A5 net (fanout=1) 0.110 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/Key_SecondStage<12> + SLICE_X40Y160.CLK Tah (-Th) 0.101 U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed<47> + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/temp_round_key<12>1 + U_KEYEXP/ROUND_KEY_GEN[7].RKGEN_U/round_key_delayed_12 + ------------------------------------------------- --------------------------- + Total 0.124ns (0.014ns logic, 0.110ns route) + (11.3% logic, 88.7% route) + +-------------------------------------------------------------------------------- + +Paths for end point ROUND[8].U_ROUND/U_MIX/data_out_38 (SLICE_X54Y160.B6), 1 path +-------------------------------------------------------------------------------- +Slack (hold path): 0.028ns (requirement - (clock path skew + uncertainty - data path)) + Source: ROUND[8].U_ROUND/U_SH/data_out_46 (FF) + Destination: ROUND[8].U_ROUND/U_MIX/data_out_38 (FF) + Requirement: 0.000ns + Data Path Delay: 0.137ns (Levels of Logic = 1) + Clock Path Skew: 0.109ns (0.773 - 0.664) + Source Clock: clk_BUFGP rising at 5.000ns + Destination Clock: clk_BUFGP rising at 5.000ns + Clock Uncertainty: 0.000ns + + Minimum Data Path at Fast Process Corner: ROUND[8].U_ROUND/U_SH/data_out_46 to ROUND[8].U_ROUND/U_MIX/data_out_38 + Location Delay type Delay(ns) Physical Resource + Logical Resource(s) + ------------------------------------------------- ------------------- + SLICE_X54Y159.DQ Tcko 0.115 ROUND[8].U_ROUND/U_SH/data_out<46> + ROUND[8].U_ROUND/U_SH/data_out_46 + SLICE_X54Y160.B6 net (fanout=5) 0.099 ROUND[8].U_ROUND/U_SH/data_out<46> + SLICE_X54Y160.CLK Tah (-Th) 0.077 ROUND[8].U_ROUND/U_MIX/data_out<40> + ROUND[8].U_ROUND/U_MIX/Mxor_State_Mulx3[8][7]_State_Mulx2[11][7]_xor_99_OUT_6_xo<0>1 + ROUND[8].U_ROUND/U_MIX/data_out_38 + ------------------------------------------------- --------------------------- + Total 0.137ns (0.038ns logic, 0.099ns route) + (27.7% logic, 72.3% route) + +-------------------------------------------------------------------------------- + +Component Switching Limit Checks: TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 50%; +-------------------------------------------------------------------------------- +Slack: 3.571ns (period - min period limit) + Period: 5.000ns + Min period limit: 1.429ns (699.790MHz) (Tbcper_I) + Physical resource: clk_BUFGP/BUFG/I0 + Logical resource: clk_BUFGP/BUFG/I0 + Location pin: BUFGCTRL_X0Y0.I0 + Clock network: clk_BUFGP/IBUFG +-------------------------------------------------------------------------------- +Slack: 4.168ns (period - (min high pulse limit / (high pulse / period))) + Period: 5.000ns + High pulse: 2.500ns + High pulse limit: 0.416ns (Trpw) + Physical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout<5>/SR + Logical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout_5/SR + Location pin: SLICE_X0Y81.SR + Clock network: ROUND[0].U_ROUND/U_KEY/reset_inv_BUFG +-------------------------------------------------------------------------------- +Slack: 4.168ns (period - (min high pulse limit / (high pulse / period))) + Period: 5.000ns + High pulse: 2.500ns + High pulse limit: 0.416ns (Trpw) + Physical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout<1>/SR + Logical resource: U_KEYEXP/ROUND_KEY_GEN[2].RKGEN_U/SUB_U/ROM[2].ROM/dout_1/SR + Location pin: SLICE_X0Y85.SR + Clock network: ROUND[0].U_ROUND/U_KEY/reset_inv_BUFG +-------------------------------------------------------------------------------- + + +All constraints were met. + + +Data Sheet report: +----------------- +All values displayed in nanoseconds (ns) + +Clock to Setup on destination clock clk +---------------+---------+---------+---------+---------+ + | Src:Rise| Src:Fall| Src:Rise| Src:Fall| +Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall| +---------------+---------+---------+---------+---------+ +clk | 4.952| | | | +---------------+---------+---------+---------+---------+ + + +Timing summary: +--------------- + +Timing errors: 0 Score: 0 (Setup/Max: 0, Hold: 0) + +Constraints cover 75065 paths, 0 nets, and 69159 connections + +Design statistics: + Minimum period: 4.952ns{1} (Maximum frequency: 201.939MHz) + + +------------------------------------Footnotes----------------------------------- +1) The minimum period statistic assumes all single cycle delays. + +Analysis completed Wed Jul 17 15:21:24 2013 +-------------------------------------------------------------------------------- + +Trace Settings: +------------------------- +Trace Settings + +Peak Memory Usage: 873 MB + + + Index: tags/R0/reports/Top_PipelinedCipher.syr =================================================================== --- tags/R0/reports/Top_PipelinedCipher.syr (nonexistent) +++ tags/R0/reports/Top_PipelinedCipher.syr (revision 2) @@ -0,0 +1,524 @@ +Release 12.1 - xst M.53d (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. +--> Parameter TMPDIR set to xst/projnav.tmp + + +Total REAL time to Xst completion: 1.00 secs +Total CPU time to Xst completion: 0.15 secs + +--> Parameter xsthdpdir set to xst + + +Total REAL time to Xst completion: 1.00 secs +Total CPU time to Xst completion: 0.15 secs + +--> Reading design: Top_PipelinedCipher.prj + +TABLE OF CONTENTS + 1) Synthesis Options Summary + 2) HDL Parsing + 3) HDL Elaboration + 4) HDL Synthesis + 4.1) HDL Synthesis Report + 5) Advanced HDL Synthesis + 5.1) Advanced HDL Synthesis Report + 6) Low Level Synthesis + 7) Partition Report + 8) Design Summary + 8.1) Primitive and Black Box Usage + 8.2) Device utilization summary + 8.3) Partition Resource Summary + 8.4) Timing Report + 8.4.1) Clock Information + 8.4.2) Asynchronous Control Signals Information + 8.4.3) Timing Summary + 8.4.4) Timing Details + + +========================================================================= +* Synthesis Options Summary * +========================================================================= +---- Source Parameters +Input File Name : "Top_PipelinedCipher.prj" +Input Format : mixed +Ignore Synthesis Constraint File : NO + +---- Target Parameters +Output File Name : "Top_PipelinedCipher" +Output Format : NGC +Target Device : xc6vcx240t-2-ff784 + +---- Source Options +Top Module Name : Top_PipelinedCipher +Automatic FSM Extraction : YES +FSM Encoding Algorithm : Auto +Safe Implementation : No +FSM Style : lut +RAM Extraction : Yes +RAM Style : Auto +ROM Extraction : Yes +Shift Register Extraction : YES +ROM Style : Auto +Resource Sharing : YES +Asynchronous To Synchronous : NO +Shift Register Minimum Size : 2 +Use DSP Block : auto +Automatic Register Balancing : No + +---- Target Options +LUT Combining : auto +Reduce Control Sets : auto +Add IO Buffers : YES +Global Maximum Fanout : 100000 +Add Generic Clock Buffer(BUFG) : 32 +Register Duplication : YES +Optimize Instantiated Primitives : NO +Use Clock Enable : Auto +Use Synchronous Set : Auto +Use Synchronous Reset : Auto +Pack IO Registers into IOBs : auto +Equivalent register Removal : YES + +---- General Options +Optimization Goal : Speed +Optimization Effort : 1 +Power Reduction : NO +Library Search Order : Top_PipelinedCipher.lso +Keep Hierarchy : NO +Netlist Hierarchy : as_optimized +RTL Output : Yes +Global Optimization : AllClockNets +Read Cores : YES +Write Timing Constraints : NO +Cross Clock Analysis : NO +Hierarchy Separator : / +Bus Delimiter : <> +Case Specifier : maintain +Slice Utilization Ratio : 100 +BRAM Utilization Ratio : 100 +DSP48 Utilization Ratio : 100 +Auto BRAM Packing : NO +Slice Utilization Ratio Delta : 5 + +========================================================================= + + +========================================================================= +* HDL Parsing * +========================================================================= +Parsing Verilog file "E:\AES\AES\SBox.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\SubBytes.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\ShiftRows.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\RoundKeyGen.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\MixColumns.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\AddRoundKey.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\Round.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\KeyExpantion.v" into library work +Parsing module . +Parsing Verilog file "E:\AES\AES\Top_PipelinedCipher.v" into library work +Parsing module . + +========================================================================= +* HDL Elaboration * +========================================================================= + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +Elaborating module . + +========================================================================= +* HDL Synthesis * +========================================================================= + +Synthesizing Unit . + Related source file is "e:/aes/aes/top_pipelinedcipher.v". + DATA_W = 128 + KEY_L = 128 + NO_ROUNDS = 10 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/keyexpantion.v". + DATA_W = 128 + KEY_L = 128 + NO_ROUNDS = 10 + Summary: + no macro. +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/roundkeygen.v". + KEY_L = 128 + WORD = 32 + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 128-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 515 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/subbytes.v". + DATA_W = 32 + NO_BYTES = 4 + Found 1-bit register for signal . + Summary: + inferred 1 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/sbox.v". + Found 8-bit register for signal . + Found 256x8-bit Read Only RAM for signal + Summary: + inferred 1 RAM(s). + inferred 8 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/addroundkey.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/round.v". + DATA_W = 128 + Summary: + no macro. +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/subbytes.v". + DATA_W = 128 + NO_BYTES = 16 + Found 1-bit register for signal . + Summary: + inferred 1 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/shiftrows.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). +Unit synthesized. + +Synthesizing Unit . + Related source file is "e:/aes/aes/mixcolumns.v". + DATA_W = 128 + Found 128-bit register for signal . + Found 1-bit register for signal . + Summary: + inferred 129 D-type flip-flop(s). + inferred 16 Multiplexer(s). +Unit synthesized. + +========================================================================= +HDL Synthesis Report + +Macro Statistics +# RAMs : 200 + 256x8-bit single-port Read Only RAM : 200 +# Registers : 352 + 1-bit register : 81 + 128-bit register : 71 + 8-bit register : 200 +# Multiplexers : 144 + 8-bit 2-to-1 multiplexer : 144 +# Xors : 349 + 128-bit xor2 : 11 + 32-bit xor2 : 50 + 8-bit xor2 : 144 + 8-bit xor5 : 144 + +========================================================================= + +========================================================================= +* Advanced HDL Synthesis * +========================================================================= + + +Synthesizing (advanced) Unit . +INFO:Xst:3030 - HDL ADVISOR - Register currently described with an asynchronous reset, could be combined with distributed RAM for implementation on block RAM resources if you made this reset synchronous instead. + ----------------------------------------------------------------------- + | ram_type | Distributed | | + ----------------------------------------------------------------------- + | Port A | + | aspect ratio | 256-word x 8-bit | | + | weA | connected to signal | high | + | addrA | connected to signal | | + | diA | connected to signal | | + | doA | connected to internal node | | + ----------------------------------------------------------------------- +INFO:Xst:3031 - HDL ADVISOR - The RAM will be implemented on LUTs either because you have described an asynchronous read or because of currently unsupported block RAM features. If you have described an asynchronous read, making it synchronous would allow you to take advantage of available block RAM resources, for optimized device usage and improved timings. Please refer to your documentation for coding guidelines. +Unit synthesized (advanced). + +========================================================================= +Advanced HDL Synthesis Report + +Macro Statistics +# RAMs : 200 + 256x8-bit single-port distributed Read Only RAM : 200 +# Registers : 10769 + Flip-Flops : 10769 +# Multiplexers : 144 + 8-bit 2-to-1 multiplexer : 144 +# Xors : 349 + 128-bit xor2 : 11 + 32-bit xor2 : 50 + 8-bit xor2 : 144 + 8-bit xor5 : 144 + +========================================================================= + +========================================================================= +* Low Level Synthesis * +========================================================================= + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Mapping all equations... +Building and optimizing final netlist ... +Found area constraint ratio of 100 (+ 5) on block Top_PipelinedCipher, actual ratio is 12. + +Final Macro Processing ... + +========================================================================= +Final Register Report + +Macro Statistics +# Registers : 10769 + Flip-Flops : 10769 + +========================================================================= + +========================================================================= +* Partition Report * +========================================================================= + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +========================================================================= +* Design Summary * +========================================================================= + +Top Level Output File Name : Top_PipelinedCipher.ngc + +Primitive and Black Box Usage: +------------------------------ +# BELS : 15403 +# INV : 1 +# LUT2 : 810 +# LUT3 : 320 +# LUT4 : 1600 +# LUT5 : 1040 +# LUT6 : 6832 +# MUXF7 : 3200 +# MUXF8 : 1600 +# FlipFlops/Latches : 10769 +# FDC : 81 +# FDCE : 10688 +# Clock Buffers : 2 +# BUFG : 1 +# BUFGP : 1 +# IO Buffers : 388 +# IBUF : 259 +# OBUF : 129 + +Device utilization summary: +--------------------------- + +Selected Device : 6vcx240tff784-2 + + +Slice Logic Utilization: + Number of Slice Registers: 10769 out of 301440 3% + Number of Slice LUTs: 10603 out of 150720 7% + Number used as Logic: 10603 out of 150720 7% + +Slice Logic Distribution: + Number of LUT Flip Flop pairs used: 15921 + Number with an unused Flip Flop: 5152 out of 15921 32% + Number with an unused LUT: 5318 out of 15921 33% + Number of fully used LUT-FF pairs: 5451 out of 15921 34% + Number of unique control sets: 82 + +IO Utilization: + Number of IOs: 389 + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + +--------------------------- +Partition Resource Summary: +--------------------------- + + No Partitions were found in this design. + +--------------------------- + + +========================================================================= +Timing Report + +NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. + FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT + GENERATED AFTER PLACE-and-ROUTE. + +Clock Information: +------------------ +-----------------------------------+------------------------+-------+ +Clock Signal | Clock buffer(FF name) | Load | +-----------------------------------+------------------------+-------+ +clk | BUFGP | 10769 | +-----------------------------------+------------------------+-------+ + +Asynchronous Control Signals Information: +---------------------------------------- +No asynchronous control signals found in this design + +Timing Summary: +--------------- +Speed Grade: -2 + + Minimum period: 1.564ns (Maximum Frequency: 639.391MHz) + Minimum input arrival time before clock: 1.252ns + Maximum output required time after clock: 0.664ns + Maximum combinational path delay: No path found + +Timing Details: +--------------- +All values displayed in nanoseconds (ns) + +========================================================================= +Timing constraint: Default period analysis for Clock 'clk' + Clock period: 1.564ns (frequency: 639.391MHz) + Total number of paths / destination ports: 75065 / 20943 +------------------------------------------------------------------------- +Delay: 1.564ns (Levels of Logic = 3) + Source: U_KEYEXP/RKGEN_U0/Key_FirstStage_24 (FF) + Destination: U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_7 (FF) + Source Clock: clk rising + Destination Clock: clk rising + + Data Path: U_KEYEXP/RKGEN_U0/Key_FirstStage_24 to U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_7 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDCE:C->Q 33 0.317 0.826 U_KEYEXP/RKGEN_U0/Key_FirstStage_24 (U_KEYEXP/RKGEN_U0/Key_FirstStage_24) + LUT6:I0->O 1 0.061 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT23 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT23) + MUXF7:I1->O 1 0.211 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f7_0 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f71) + MUXF8:I0->O 1 0.149 0.000 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM_Mram_addr[7]_GND_5_o_wide_mux_0_OUT2_f8 (U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/addr[7]_GND_5_o_wide_mux_0_OUT<1>) + FDCE:D -0.002 U_KEYEXP/RKGEN_U0/SUB_U/ROM[0].ROM/dout_1 + ---------------------------------------- + Total 1.564ns (0.738ns logic, 0.826ns route) + (47.2% logic, 52.8% route) + +========================================================================= +Timing constraint: Default OFFSET IN BEFORE for Clock 'clk' + Total number of paths / destination ports: 771 / 514 +------------------------------------------------------------------------- +Offset: 1.252ns (Levels of Logic = 2) + Source: cipherkey_valid_in (PAD) + Destination: U0_ARK/data_out_127 (FF) + Destination Clock: clk rising + + Data Path: cipherkey_valid_in to U0_ARK/data_out_127 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + IBUF:I->O 130 0.003 0.505 cipherkey_valid_in_IBUF (cipherkey_valid_in_IBUF) + LUT2:I1->O 129 0.061 0.487 U0_ARK/data_valid_in_key_valid_in_AND_2_o1 (U0_ARK/data_valid_in_key_valid_in_AND_2_o) + FDCE:CE 0.196 U0_ARK/data_out_0 + ---------------------------------------- + Total 1.252ns (0.260ns logic, 0.992ns route) + (20.8% logic, 79.2% route) + +========================================================================= +Timing constraint: Default OFFSET OUT AFTER for Clock 'clk' + Total number of paths / destination ports: 129 / 129 +------------------------------------------------------------------------- +Offset: 0.664ns (Levels of Logic = 1) + Source: U_KEY/data_out_127 (FF) + Destination: cipher_text<127> (PAD) + Source Clock: clk rising + + Data Path: U_KEY/data_out_127 to cipher_text<127> + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDCE:C->Q 2 0.317 0.344 U_KEY/data_out_127 (U_KEY/data_out_127) + OBUF:I->O 0.003 cipher_text_127_OBUF (cipher_text<127>) + ---------------------------------------- + Total 0.664ns (0.320ns logic, 0.344ns route) + (48.2% logic, 51.8% route) + +========================================================================= + + +Total REAL time to Xst completion: 106.00 secs +Total CPU time to Xst completion: 105.60 secs + +--> + +Total memory usage is 397192 kilobytes + +Number of errors : 0 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 2 ( 0 filtered) + Index: tags/R0/reports/Top_PipelinedCipher.par =================================================================== --- tags/R0/reports/Top_PipelinedCipher.par (nonexistent) +++ tags/R0/reports/Top_PipelinedCipher.par (revision 2) @@ -0,0 +1,190 @@ +Release 12.1 par M.53d (nt64) +Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. + +AMRSALAH-PC:: Wed Jul 17 15:17:40 2013 + +par -w -intstyle ise -ol high Top_PipelinedCipher_map.ncd +Top_PipelinedCipher.ncd Top_PipelinedCipher.pcf + + +Constraints file: Top_PipelinedCipher.pcf. +Loading device for application Rf_Device from file '6vcx240t.nph' in environment E:\ISE12\ISE_DS\ISE. + "Top_PipelinedCipher" is an NCD, version 3.2, device xc6vcx240t, package ff784, speed -2 +vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +INFO:Security:56 - Part 'xc6vcx240t' is not a WebPack part. +WARNING:Security:42 - Your software subscription period has lapsed. Your current version of Xilinx tools will continue +to function, but you no longer qualify for Xilinx software updates or new releases. + +---------------------------------------------------------------------- + +Initializing temperature to 85.000 Celsius. (default - Range: 0.000 to 85.000 Celsius) +Initializing voltage to 0.950 Volts. (default - Range: 0.950 to 1.050 Volts) + + +Device speed data version: "PRELIMINARY 1.04 2010-04-09". + + + +Device Utilization Summary: + +Slice Logic Utilization: + Number of Slice Registers: 10,769 out of 301,440 3% + Number used as Flip Flops: 10,769 + Number used as Latches: 0 + Number used as Latch-thrus: 0 + Number used as AND/OR logics: 0 + Number of Slice LUTs: 12,475 out of 150,720 8% + Number used as logic: 9,842 out of 150,720 6% + Number using O6 output only: 9,081 + Number using O5 output only: 0 + Number using O5 and O6: 761 + Number used as ROM: 0 + Number used as Memory: 0 out of 58,400 0% + Number used exclusively as route-thrus: 2,633 + Number with same-slice register load: 2,633 + Number with same-slice carry load: 0 + Number with other load: 0 + +Slice Logic Distribution: + Number of occupied Slices: 3,214 out of 37,680 8% + Number of LUT Flip Flop pairs used: 12,527 + Number with an unused Flip Flop: 5,031 out of 12,527 40% + Number with an unused LUT: 52 out of 12,527 1% + Number of fully used LUT-FF pairs: 7,444 out of 12,527 59% + Number of slice register sites lost + to control set restrictions: 0 out of 301,440 0% + + A LUT Flip Flop pair for this architecture represents one LUT paired with + one Flip Flop within a slice. A control set is a unique combination of + clock, reset, set, and enable signals for a registered element. + The Slice Logic Distribution report is not meaningful if the design is + over-mapped for a non-slice resource or if Placement fails. + OVERMAPPING of BRAM resources should be ignored if the design is + over-mapped for a non-BRAM resource or if placement fails. + +IO Utilization: + Number of bonded IOBs: 389 out of 400 97% + +Specific Feature Utilization: + Number of RAMB36E1/FIFO36E1s: 0 out of 416 0% + Number of RAMB18E1/FIFO18E1s: 0 out of 832 0% + Number of BUFG/BUFGCTRLs: 2 out of 32 6% + Number used as BUFGs: 2 + Number used as BUFGCTRLs: 0 + Number of ILOGICE1/ISERDESE1s: 0 out of 720 0% + Number of OLOGICE1/OSERDESE1s: 0 out of 720 0% + Number of BSCANs: 0 out of 4 0% + Number of BUFHCEs: 0 out of 144 0% + Number of BUFIODQSs: 0 out of 72 0% + Number of BUFRs: 0 out of 36 0% + Number of CAPTUREs: 0 out of 1 0% + Number of DSP48E1s: 0 out of 768 0% + Number of EFUSE_USRs: 0 out of 1 0% + Number of GTXE1s: 0 out of 12 0% + Number of IBUFDS_GTXE1s: 0 out of 8 0% + Number of ICAPs: 0 out of 2 0% + Number of IDELAYCTRLs: 0 out of 18 0% + Number of IODELAYE1s: 0 out of 720 0% + Number of MMCM_ADVs: 0 out of 12 0% + Number of PCIE_2_0s: 0 out of 2 0% + Number of STARTUPs: 1 out of 1 100% + Number of SYSMONs: 0 out of 1 0% + Number of TEMAC_SINGLEs: 0 out of 1 0% + + +Overall effort level (-ol): High +Router effort level (-rl): High + +Starting initial Timing Analysis. REAL time: 35 secs +Finished initial Timing Analysis. REAL time: 36 secs + +Starting Router + + +Phase 1 : 77964 unrouted; REAL time: 42 secs + +Phase 2 : 70512 unrouted; REAL time: 54 secs + +Phase 3 : 26862 unrouted; REAL time: 1 mins 44 secs + +Phase 4 : 26860 unrouted; (Setup:0, Hold:1, Component Switching Limit:0) REAL time: 1 mins 56 secs + +Updating file: Top_PipelinedCipher.ncd with current fully routed design. + +Phase 5 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 6 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 7 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 8 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 9 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 30 secs + +Phase 10 : 0 unrouted; (Setup:0, Hold:0, Component Switching Limit:0) REAL time: 2 mins 38 secs +Total REAL time to Router completion: 2 mins 38 secs +Total CPU time to Router completion: 2 mins 42 secs + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +Generating "PAR" statistics. + +************************** +Generating Clock Report +************************** + ++---------------------+--------------+------+------+------------+-------------+ +| Clock Net | Resource |Locked|Fanout|Net Skew(ns)|Max Delay(ns)| ++---------------------+--------------+------+------+------------+-------------+ +| clk_BUFGP | BUFGCTRL_X0Y0| No | 3213 | 0.252 | 1.834 | ++---------------------+--------------+------+------+------------+-------------+ + +* Net Skew is the difference between the minimum and maximum routing +only delays for the net. Note this is different from Clock Skew which +is reported in TRCE timing report. Clock Skew is the difference between +the minimum and maximum path delays which includes logic delays. + +Timing Score: 0 (Setup: 0, Hold: 0, Component Switching Limit: 0) + +Asterisk (*) preceding a constraint indicates it was not met. + This may be due to a setup or hold violation. + +---------------------------------------------------------------------------------------------------------- + Constraint | Check | Worst Case | Best Case | Timing | Timing + | | Slack | Achievable | Errors | Score +---------------------------------------------------------------------------------------------------------- + TS_clk = PERIOD TIMEGRP "clk" 5 ns HIGH 5 | SETUP | 0.048ns| 4.952ns| 0| 0 + 0% | HOLD | 0.006ns| | 0| 0 +---------------------------------------------------------------------------------------------------------- + + +All constraints were met. + + +Generating Pad Report. + +All signals are completely routed. + +Total REAL time to PAR completion: 2 mins 46 secs +Total CPU time to PAR completion: 2 mins 49 secs + +Peak Memory Usage: 1113 MB + +Placer: Placement generated during map. +Routing: Completed - No errors found. +Timing: Completed - No errors found. + +Number of error messages: 0 +Number of warning messages: 0 +Number of info messages: 0 + +Writing design to file Top_PipelinedCipher.ncd + + + +PAR done!

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.