data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v
1: b'%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:99: Operator ASSIGNDLY expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'INIT\' generates 12 bits.\n                                                                                                                    : ... In instance hdcp_cipher\n cstate <= INIT;\n        ^~\n                ... Use "/* verilator lint_off WIDTH */" and lint_on around source to disable this message.\n%Error: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:104: Cannot find file containing module: \'hdcp_lfsr\'\n   hdcp_lfsr  lfsr( .clk(clk), .reset(reset),\n   ^~~~~~~~~\n        ... Looked in:\n             data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin,data/full_repos/permissive/173232294/hdcp_lfsr\n             data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin,data/full_repos/permissive/173232294/hdcp_lfsr.v\n             data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin,data/full_repos/permissive/173232294/hdcp_lfsr.sv\n             hdcp_lfsr\n             hdcp_lfsr.v\n             hdcp_lfsr.sv\n             obj_dir/hdcp_lfsr\n             obj_dir/hdcp_lfsr.v\n             obj_dir/hdcp_lfsr.sv\n%Error: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:110: Cannot find file containing module: \'hdcp_block\'\n   hdcp_block block( .clk(clk), .reset(reset),\n   ^~~~~~~~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:143: Operator COND expects 13 bits on the Conditional True, but Conditional True\'s VARREF \'BLOCK_1\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = hdcpBlockCipher_init ? BLOCK_1 : INIT;\n                                  ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:143: Operator COND expects 13 bits on the Conditional False, but Conditional False\'s VARREF \'INIT\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = hdcpBlockCipher_init ? BLOCK_1 : INIT;\n                                  ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:146: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_2\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_2;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:149: Operator COND expects 13 bits on the Conditional True, but Conditional True\'s VARREF \'BLOCK_3\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = (statecnt >= 6\'d47) ? BLOCK_3: BLOCK_2;\n                                 ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:149: Operator COND expects 13 bits on the Conditional False, but Conditional False\'s VARREF \'BLOCK_2\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = (statecnt >= 6\'d47) ? BLOCK_3: BLOCK_2;\n                                 ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:152: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_4\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_4;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:155: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_5\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_5;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:158: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_6\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_6;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:161: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_7\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_7;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:164: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_8\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = BLOCK_8;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:167: Operator COND expects 13 bits on the Conditional True, but Conditional True\'s VARREF \'BLOCK_9\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = (statecnt >= 6\'d55) ? BLOCK_9: BLOCK_8;\n                                 ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:167: Operator COND expects 13 bits on the Conditional False, but Conditional False\'s VARREF \'BLOCK_8\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = (statecnt >= 6\'d55) ? BLOCK_9: BLOCK_8;\n                                 ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:170: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'GET_M\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = GET_M;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:173: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'STREAM\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n    nstate = STREAM;\n           ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:177: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_1\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = BLOCK_1;\n              ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:179: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'REKEY\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = REKEY;\n              ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:181: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'STREAM\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = STREAM;\n              ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:186: Operator ASSIGN expects 13 bits on the Assign RHS, but Assign RHS\'s VARREF \'BLOCK_1\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = BLOCK_1;\n              ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:188: Operator COND expects 13 bits on the Conditional True, but Conditional True\'s VARREF \'STREAM\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = (statecnt >= 6\'d55) ? STREAM : REKEY;\n                                    ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:188: Operator COND expects 13 bits on the Conditional False, but Conditional False\'s VARREF \'REKEY\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n       nstate = (statecnt >= 6\'d55) ? STREAM : REKEY;\n                                    ^\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'INIT\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_1\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_2\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_3\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_4\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_5\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_6\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_7\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_8\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_9\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'GET_M\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'STREAM\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:141: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'REKEY\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n      case (cstate)  \n      ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'INIT\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_1\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_2\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_3\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_4\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_5\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_6\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_7\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_8\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'BLOCK_9\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'GET_M\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'STREAM\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:206: Operator CASE expects 13 bits on the Case Item, but Case Item\'s VARREF \'REKEY\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  case (cstate)  \n  ^~~~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:369: Operator ASSIGNDLY expects 84 bits on the Assign RHS, but Assign RHS\'s CONST \'80\'h0\' generates 80 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  Ks <= 80\'b0;\n     ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:370: Operator ASSIGNDLY expects 84 bits on the Assign RHS, but Assign RHS\'s CONST \'80\'h0\' generates 80 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  Ki <= 80\'b0;\n     ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:378: Operator ASSIGNDLY expects 84 bits on the Assign RHS, but Assign RHS\'s CONST \'80\'h0\' generates 80 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n     Ki <= 80\'b0;\n        ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:391: Operator ASSIGNDLY expects 64 bits on the Assign RHS, but Assign RHS\'s CONST \'80\'h0\' generates 80 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  Mi <= 80\'b0;\n     ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:393: Operator EQ expects 13 bits on the RHS, but RHS\'s VARREF \'BLOCK_8\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  if( (cstate == BLOCK_8) || (cstate == BLOCK_9) || (cstate == GET_M) ) begin\n              ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:393: Operator EQ expects 13 bits on the RHS, but RHS\'s VARREF \'BLOCK_9\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  if( (cstate == BLOCK_8) || (cstate == BLOCK_9) || (cstate == GET_M) ) begin\n                                     ^~\n%Warning-WIDTH: data/full_repos/permissive/173232294/hdcp_engine.srcs/sources_1/imports/srcs-origin/hdcp_cipher.v:393: Operator EQ expects 13 bits on the RHS, but RHS\'s VARREF \'GET_M\' generates 12 bits.\n                                                                                                                     : ... In instance hdcp_cipher\n  if( (cstate == BLOCK_8) || (cstate == BLOCK_9) || (cstate == GET_M) ) begin\n                                                            ^~\n%Error: Exiting due to 2 error(s), 54 warning(s)\n'
module hdcp_cipher(
		   input wire    clk,
		   input         reset,
		   
		   input [55:0]  Km,
		   input [63:0]  An,

		   input         hdcpBlockCipher_init,
		   input         authentication,
		   input         hdcpRekeyCipher,
		   input         hdcpStreamCipher,
		   output [23:0] pr_data,
		   output reg    stream_ready
		   );

   wire 			 lfsr_out;
   wire [23:0] 			 ostream;
   wire [83:0] 			 Bo_wire;

   parameter INIT =       12'b1 << 0;
   parameter BLOCK_1 =    12'b1 << 1;
   parameter BLOCK_2 =    12'b1 << 2;
   parameter BLOCK_3 =    12'b1 << 3;
   parameter BLOCK_4 =    12'b1 << 4;
   parameter BLOCK_5 =    12'b1 << 5;
   parameter BLOCK_6 =    12'b1 << 6;
   parameter BLOCK_7 =    12'b1 << 7;
   parameter BLOCK_8 =    12'b1 << 8;
   parameter BLOCK_9 =    12'b1 << 9;
   parameter GET_M   =    12'b1 << 10;
   parameter STREAM  =    12'b1 << 11;
   parameter REKEY   =    12'b1 << 12;
   parameter nSTATES = 13;
   
   reg [(nSTATES-1):0] cstate = {{(nSTATES-1){1'b0}},1'b1};
   reg [(nSTATES-1):0] nstate;


`ifdef SIMULATION

   reg [8*20:1] 	     state_ascii = "INIT               ";
   always @(cstate) begin
      if      (cstate == INIT     )  state_ascii <= "INIT               ";
      else if (cstate == BLOCK_1  )  state_ascii <= "BLOCK_1            ";
      else if (cstate == BLOCK_2  )  state_ascii <= "BLOCK_2            ";
      else if (cstate == BLOCK_3  )  state_ascii <= "BLOCK_3            ";
      else if (cstate == BLOCK_4  )  state_ascii <= "BLOCK_4            ";
      else if (cstate == BLOCK_5  )  state_ascii <= "BLOCK_5            ";
      else if (cstate == BLOCK_6  )  state_ascii <= "BLOCK_6            ";
      else if (cstate == BLOCK_7  )  state_ascii <= "BLOCK_7            ";
      else if (cstate == BLOCK_8  )  state_ascii <= "BLOCK_8            ";
      else if (cstate == BLOCK_9  )  state_ascii <= "BLOCK_9            ";
      else if (cstate == GET_M    )  state_ascii <= "GET_M              ";
      else if (cstate == STREAM   )  state_ascii <= "STREAM             ";
      else if (cstate == REKEY    )  state_ascii <= "REKEY              ";
      else state_ascii                           <= "WTF                ";
   end

`endif

   reg [5:0] 	       statecnt;
   reg 		       rekey;
   reg 		       load_block;
   reg 		       load_56;
   reg 		       load_lfsr;
   reg 		       advance_lfsr;
   reg 		       advance_block;
   reg [83:0] 	       Ks;
   reg [83:0] 	       Ki;
   reg [63:0] 	       Mi;
   reg 		       load_ks;
   reg 		       auth_mode;
   reg [83:0] 	       Kmod;
      
   always @ (posedge clk) begin
      if (reset)
	cstate <= INIT;
            else
	cstate <=#1 nstate;
   end
   
   hdcp_lfsr  lfsr( .clk(clk), .reset(reset),
		    .iv(auth_mode ? Ks[55:0] : Ki[55:0]),
		    .init_iv(load_lfsr),
		    .advance(advance_lfsr),
		    .onebit(lfsr_out));

   hdcp_block block( .clk(clk), .reset(reset),

		     .load(load_block),
		     .B(auth_mode ? {20'b0,An} : {20'b0,Mi}),
		     .K(Kmod),
		     .Bo(Bo_wire),
		     .rekey(rekey),
		     .lfsr_in(lfsr_out),
		     .ostream(ostream),
		     .advance(advance_block));
   assign pr_data = ostream;

   always @ (*) begin
      case ({auth_mode,load_56})
	2'b00: begin
	   Kmod = Ki;
	end
	2'b01: begin
	   Kmod = {28'b0,Ks[55:0]};
	end
	2'b10: begin
	   Kmod = Ks;
	end
	2'b11: begin
	   Kmod = {28'b0,Km[55:0]};
	end
      endcase
   end

   
   always @ (*) begin
      case (cstate)
	INIT: begin
	   nstate = hdcpBlockCipher_init ? BLOCK_1 : INIT;
	end
	BLOCK_1: begin
	   nstate = BLOCK_2;
	end
	BLOCK_2: begin
	   nstate = (statecnt >= 6'd47) ? BLOCK_3: BLOCK_2;
	end
	BLOCK_3: begin
	   nstate = BLOCK_4;
	end
	BLOCK_4: begin
	   nstate = BLOCK_5;
	end
	BLOCK_5: begin
	   nstate = BLOCK_6;
	end
	BLOCK_6: begin
	   nstate = BLOCK_7;
	end
	BLOCK_7: begin
	   nstate = BLOCK_8;
	end
	BLOCK_8: begin
	   nstate = (statecnt >= 6'd55) ? BLOCK_9: BLOCK_8;
	end
	BLOCK_9: begin
	   nstate = GET_M;
	end
	GET_M: begin
	   nstate = STREAM;
	end
	STREAM: begin
	   if( hdcpBlockCipher_init ) begin
	      nstate = BLOCK_1;
	   end else if( hdcpRekeyCipher ) begin
	      nstate = REKEY;
	   end else begin
	      nstate = STREAM;
	   end
	end
	REKEY: begin
	   if( hdcpBlockCipher_init ) begin
	      nstate = BLOCK_1;
	   end else begin
	      nstate = (statecnt >= 6'd55) ? STREAM : REKEY;
	   end
	end
      endcase
   end
   
   always @ (posedge clk) begin
      if( reset ) begin
	 statecnt <=#1 6'b0;
	 rekey <=#1 1'b0;
	 load_block <=#1 1'b0;
	 advance_lfsr <=#1 1'b0;
	 advance_block <=#1 1'b0;
	 load_ks <=#1 1'b0;
	 auth_mode <=#1 1'b0;
	 stream_ready <=#1 1'b0;
	 load_56 <=#1 1'b0;
      end else begin
	 case (cstate)
	   INIT: begin
	      statecnt <=#1 6'b0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 authentication;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_1: begin
	      statecnt <=#1 6'b0;   
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b1;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b1;
	   end
	   BLOCK_2: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_3: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b1;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_4: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b1;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_5: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b1;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_6: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;   
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b1;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_7: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b1;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_8: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b1; 
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b1;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_9: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   GET_M: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 1'b0;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   STREAM: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 hdcpStreamCipher;
	      advance_block <=#1 hdcpStreamCipher;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 authentication;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b1;
	      load_56 <=#1 1'b0;
	   end
	   REKEY: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b1;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b1;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	 endcase
      end
   end
   
   always @(posedge clk) begin
      if( reset ) begin
	 Ks <= 80'b0;
	 Ki <= 80'b0;
      end else begin




	 if( load_ks && auth_mode ) begin
	    Ks <= Bo_wire;
	    Ki <= 80'b0;
	 end else if( load_ks && !auth_mode ) begin
	    Ks <= Ks;
	    Ki <= Bo_wire;
	 end else begin
	    Ks <= Ks;
	    Ki <= Ki;
	 end
      end
   end
      
   always @(posedge clk) begin
      if( reset ) begin
	 Mi <= 80'b0;
      end else begin
	 if( (cstate == BLOCK_8) || (cstate == BLOCK_9) || (cstate == GET_M) ) begin
	    Mi[15:0] <= ostream[15:0];
	    Mi[31:16] <= Mi[15:0];
	    Mi[47:32] <= Mi[31:16];
	    Mi[63:48] <= Mi[47:32];
	 end else begin
	    Mi <= Mi;
	 end
      end
   end
   
endmodule
module hdcp_cipher(
		   input wire    clk,
		   input         reset,
		   
		   input [55:0]  Km,
		   input [63:0]  An,

		   input         hdcpBlockCipher_init,
		   input         authentication,
		   input         hdcpRekeyCipher,
		   input         hdcpStreamCipher,
		   output [23:0] pr_data,
		   output reg    stream_ready
		   );


   wire 			 lfsr_out;
   wire [23:0] 			 ostream;
   wire [83:0] 			 Bo_wire;

   parameter INIT =       12'b1 << 0;
   parameter BLOCK_1 =    12'b1 << 1;
   parameter BLOCK_2 =    12'b1 << 2;
   parameter BLOCK_3 =    12'b1 << 3;
   parameter BLOCK_4 =    12'b1 << 4;
   parameter BLOCK_5 =    12'b1 << 5;
   parameter BLOCK_6 =    12'b1 << 6;
   parameter BLOCK_7 =    12'b1 << 7;
   parameter BLOCK_8 =    12'b1 << 8;
   parameter BLOCK_9 =    12'b1 << 9;
   parameter GET_M   =    12'b1 << 10;
   parameter STREAM  =    12'b1 << 11;
   parameter REKEY   =    12'b1 << 12;
   parameter nSTATES = 13;
   
   reg [(nSTATES-1):0] cstate = {{(nSTATES-1){1'b0}},1'b1};
   reg [(nSTATES-1):0] nstate;


`ifdef SIMULATION

   reg [8*20:1] 	     state_ascii = "INIT               ";
   always @(cstate) begin
      if      (cstate == INIT     )  state_ascii <= "INIT               ";
      else if (cstate == BLOCK_1  )  state_ascii <= "BLOCK_1            ";
      else if (cstate == BLOCK_2  )  state_ascii <= "BLOCK_2            ";
      else if (cstate == BLOCK_3  )  state_ascii <= "BLOCK_3            ";
      else if (cstate == BLOCK_4  )  state_ascii <= "BLOCK_4            ";
      else if (cstate == BLOCK_5  )  state_ascii <= "BLOCK_5            ";
      else if (cstate == BLOCK_6  )  state_ascii <= "BLOCK_6            ";
      else if (cstate == BLOCK_7  )  state_ascii <= "BLOCK_7            ";
      else if (cstate == BLOCK_8  )  state_ascii <= "BLOCK_8            ";
      else if (cstate == BLOCK_9  )  state_ascii <= "BLOCK_9            ";
      else if (cstate == GET_M    )  state_ascii <= "GET_M              ";
      else if (cstate == STREAM   )  state_ascii <= "STREAM             ";
      else if (cstate == REKEY    )  state_ascii <= "REKEY              ";
      else state_ascii                           <= "WTF                ";
   end

`endif

   reg [5:0] 	       statecnt;
   reg 		       rekey;
   reg 		       load_block;
   reg 		       load_56;
   reg 		       load_lfsr;
   reg 		       advance_lfsr;
   reg 		       advance_block;
   reg [83:0] 	       Ks;
   reg [83:0] 	       Ki;
   reg [63:0] 	       Mi;
   reg 		       load_ks;
   reg 		       auth_mode;
   reg [83:0] 	       Kmod;
      
   always @ (posedge clk) begin
      if (reset)
	cstate <= INIT;
            else
	cstate <=#1 nstate;
   end
   
   hdcp_lfsr  lfsr( .clk(clk), .reset(reset),
		    .iv(auth_mode ? Ks[55:0] : Ki[55:0]),
		    .init_iv(load_lfsr),
		    .advance(advance_lfsr),
		    .onebit(lfsr_out));

   hdcp_block block( .clk(clk), .reset(reset),

		     .load(load_block),
		     .B(auth_mode ? {20'b0,An} : {20'b0,Mi}),
		     .K(Kmod),
		     .Bo(Bo_wire),
		     .rekey(rekey),
		     .lfsr_in(lfsr_out),
		     .ostream(ostream),
		     .advance(advance_block));
   assign pr_data = ostream;

   always @ (*) begin
      case ({auth_mode,load_56})
	2'b00: begin
	   Kmod = Ki;
	end
	2'b01: begin
	   Kmod = {28'b0,Ks[55:0]};
	end
	2'b10: begin
	   Kmod = Ks;
	end
	2'b11: begin
	   Kmod = {28'b0,Km[55:0]};
	end
      endcase
   end

   
   always @ (*) begin
      case (cstate)
	INIT: begin
	   nstate = hdcpBlockCipher_init ? BLOCK_1 : INIT;
	end
	BLOCK_1: begin
	   nstate = BLOCK_2;
	end
	BLOCK_2: begin
	   nstate = (statecnt >= 6'd47) ? BLOCK_3: BLOCK_2;
	end
	BLOCK_3: begin
	   nstate = BLOCK_4;
	end
	BLOCK_4: begin
	   nstate = BLOCK_5;
	end
	BLOCK_5: begin
	   nstate = BLOCK_6;
	end
	BLOCK_6: begin
	   nstate = BLOCK_7;
	end
	BLOCK_7: begin
	   nstate = BLOCK_8;
	end
	BLOCK_8: begin
	   nstate = (statecnt >= 6'd55) ? BLOCK_9: BLOCK_8;
	end
	BLOCK_9: begin
	   nstate = GET_M;
	end
	GET_M: begin
	   nstate = STREAM;
	end
	STREAM: begin
	   if( hdcpBlockCipher_init ) begin
	      nstate = BLOCK_1;
	   end else if( hdcpRekeyCipher ) begin
	      nstate = REKEY;
	   end else begin
	      nstate = STREAM;
	   end
	end
	REKEY: begin
	   if( hdcpBlockCipher_init ) begin
	      nstate = BLOCK_1;
	   end else begin
	      nstate = (statecnt >= 6'd55) ? STREAM : REKEY;
	   end
	end
      endcase
   end
   
   always @ (posedge clk) begin
      if( reset ) begin
	 statecnt <=#1 6'b0;
	 rekey <=#1 1'b0;
	 load_block <=#1 1'b0;
	 advance_lfsr <=#1 1'b0;
	 advance_block <=#1 1'b0;
	 load_ks <=#1 1'b0;
	 auth_mode <=#1 1'b0;
	 stream_ready <=#1 1'b0;
	 load_56 <=#1 1'b0;
      end else begin
	 case (cstate)
	   INIT: begin
	      statecnt <=#1 6'b0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 authentication;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_1: begin
	      statecnt <=#1 6'b0;   
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b1;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b1;
	   end
	   BLOCK_2: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_3: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b1;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_4: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b1;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_5: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b1;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_6: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;   
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b1;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_7: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b1;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_8: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b1; 
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b1;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   BLOCK_9: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   GET_M: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b0;
	      advance_block <=#1 1'b0;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 1'b0;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	   STREAM: begin
	      statecnt <=#1 0;
	      rekey <=#1 1'b0;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 hdcpStreamCipher;
	      advance_block <=#1 hdcpStreamCipher;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 authentication;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b1;
	      load_56 <=#1 1'b0;
	   end
	   REKEY: begin
	      statecnt <=#1 statecnt + 1;
	      rekey <=#1 1'b1;
	      load_block <=#1 1'b0;
	      advance_lfsr <=#1 1'b1;
	      advance_block <=#1 1'b1;
	      load_ks <=#1 1'b0;
	      auth_mode <=#1 auth_mode;
	      load_lfsr <=#1 1'b0;
	      stream_ready <=#1 1'b0;
	      load_56 <=#1 1'b0;
	   end
	 endcase
      end
   end
   
   always @(posedge clk) begin
      if( reset ) begin
	 Ks <= 80'b0;
	 Ki <= 80'b0;
      end else begin




	 if( load_ks && auth_mode ) begin
	    Ks <= Bo_wire;
	    Ki <= 80'b0;
	 end else if( load_ks && !auth_mode ) begin
	    Ks <= Ks;
	    Ki <= Bo_wire;
	 end else begin
	    Ks <= Ks;
	    Ki <= Ki;
	 end
      end
   end
      
   always @(posedge clk) begin
      if( reset ) begin
	 Mi <= 80'b0;
      end else begin
	 if( (cstate == BLOCK_8) || (cstate == BLOCK_9) || (cstate == GET_M) ) begin
	    Mi[15:0] <= ostream[15:0];
	    Mi[31:16] <= Mi[15:0];
	    Mi[47:32] <= Mi[31:16];
	    Mi[63:48] <= Mi[47:32];
	 end else begin
	    Mi <= Mi;
	 end
      end
   end
   
endmodule