diff --git a/verilog/rtl/ips/adv_dbg_if b/verilog/rtl/ips/adv_dbg_if
deleted file mode 160000
index 20655af..0000000
--- a/verilog/rtl/ips/adv_dbg_if
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 20655aff9c4bfdeabf928f75e035e5e36bfc54f9
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_biu.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_biu.v
new file mode 100644
index 0000000..bd432c1
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_biu.v
@@ -0,0 +1,443 @@
+module adbg_axi_biu 
+#(
+    parameter AXI_ADDR_WIDTH = 32,
+    parameter AXI_DATA_WIDTH = 64,
+    parameter AXI_USER_WIDTH = 6,
+    parameter AXI_ID_WIDTH   = 3
+)
+(
+	tck_i,
+	trstn_i,
+	data_i,
+	data_o,
+	addr_i,
+	strobe_i,
+	rd_wrn_i,
+	rdy_o,
+	err_o,
+	word_size_i,
+	axi_aclk,
+	axi_aresetn,
+	axi_master_aw_valid,
+	axi_master_aw_addr,
+	axi_master_aw_prot,
+	axi_master_aw_region,
+	axi_master_aw_len,
+	axi_master_aw_size,
+	axi_master_aw_burst,
+	axi_master_aw_lock,
+	axi_master_aw_cache,
+	axi_master_aw_qos,
+	axi_master_aw_id,
+	axi_master_aw_user,
+	axi_master_aw_ready,
+	axi_master_ar_valid,
+	axi_master_ar_addr,
+	axi_master_ar_prot,
+	axi_master_ar_region,
+	axi_master_ar_len,
+	axi_master_ar_size,
+	axi_master_ar_burst,
+	axi_master_ar_lock,
+	axi_master_ar_cache,
+	axi_master_ar_qos,
+	axi_master_ar_id,
+	axi_master_ar_user,
+	axi_master_ar_ready,
+	axi_master_w_valid,
+	axi_master_w_data,
+	axi_master_w_strb,
+	axi_master_w_user,
+	axi_master_w_last,
+	axi_master_w_ready,
+	axi_master_r_valid,
+	axi_master_r_data,
+	axi_master_r_resp,
+	axi_master_r_last,
+	axi_master_r_id,
+	axi_master_r_user,
+	axi_master_r_ready,
+	axi_master_b_valid,
+	axi_master_b_resp,
+	axi_master_b_id,
+	axi_master_b_user,
+	axi_master_b_ready
+);
+	//parameter AXI_ADDR_WIDTH = 32;
+	//parameter AXI_DATA_WIDTH = 64;
+	//parameter AXI_USER_WIDTH = 6;
+	//parameter AXI_ID_WIDTH = 3;
+	input wire tck_i;
+	input wire trstn_i;
+	input wire [63:0] data_i;
+	output reg [63:0] data_o;
+	input wire [31:0] addr_i;
+	input wire strobe_i;
+	input wire rd_wrn_i;
+	output reg rdy_o;
+	output wire err_o;
+	input wire [3:0] word_size_i;
+	input wire axi_aclk;
+	input wire axi_aresetn;
+	output reg axi_master_aw_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_aw_addr;
+	output wire [2:0] axi_master_aw_prot;
+	output wire [3:0] axi_master_aw_region;
+	output wire [7:0] axi_master_aw_len;
+	output reg [2:0] axi_master_aw_size;
+	output wire [1:0] axi_master_aw_burst;
+	output wire axi_master_aw_lock;
+	output wire [3:0] axi_master_aw_cache;
+	output wire [3:0] axi_master_aw_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_aw_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_aw_user;
+	input wire axi_master_aw_ready;
+	output reg axi_master_ar_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_ar_addr;
+	output wire [2:0] axi_master_ar_prot;
+	output wire [3:0] axi_master_ar_region;
+	output wire [7:0] axi_master_ar_len;
+	output reg [2:0] axi_master_ar_size;
+	output wire [1:0] axi_master_ar_burst;
+	output wire axi_master_ar_lock;
+	output wire [3:0] axi_master_ar_cache;
+	output wire [3:0] axi_master_ar_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_ar_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_ar_user;
+	input wire axi_master_ar_ready;
+	output reg axi_master_w_valid;
+	output wire [AXI_DATA_WIDTH - 1:0] axi_master_w_data;
+	output wire [(AXI_DATA_WIDTH / 8) - 1:0] axi_master_w_strb;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_w_user;
+	output wire axi_master_w_last;
+	input wire axi_master_w_ready;
+	input wire axi_master_r_valid;
+	input wire [AXI_DATA_WIDTH - 1:0] axi_master_r_data;
+	input wire [1:0] axi_master_r_resp;
+	input wire axi_master_r_last;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_r_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_r_user;
+	output reg axi_master_r_ready;
+	input wire axi_master_b_valid;
+	input wire [1:0] axi_master_b_resp;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_b_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_b_user;
+	output reg axi_master_b_ready;
+	reg [(AXI_DATA_WIDTH / 8) - 1:0] sel_reg;
+	reg [AXI_ADDR_WIDTH - 1:0] addr_reg;
+	reg [AXI_DATA_WIDTH - 1:0] data_in_reg;
+	reg [AXI_DATA_WIDTH - 1:0] data_out_reg;
+	reg wr_reg;
+	reg str_sync;
+	reg rdy_sync;
+	reg err_reg;
+	reg rdy_sync_tff1;
+	reg rdy_sync_tff2;
+	reg rdy_sync_tff2q;
+	reg str_sync_wbff1;
+	reg str_sync_wbff2;
+	reg str_sync_wbff2q;
+	reg data_o_en;
+	reg rdy_sync_en;
+	reg err_en;
+	reg [(AXI_DATA_WIDTH / 8) - 1:0] be_dec;
+	wire start_toggle;
+	reg [AXI_DATA_WIDTH - 1:0] swapped_data_i;
+	reg [AXI_DATA_WIDTH - 1:0] swapped_data_out;
+	reg [1:0] axi_fsm_state;
+	reg [1:0] next_fsm_state;
+	always @(*)
+		if (AXI_DATA_WIDTH == 64)
+			case (word_size_i)
+				4'h1:
+					if (addr_i[2:0] == 3'b000)
+						be_dec = 8'b00000001;
+					else if (addr_i[2:0] == 3'b001)
+						be_dec = 8'b00000010;
+					else if (addr_i[2:0] == 3'b010)
+						be_dec = 8'b00000100;
+					else if (addr_i[2:0] == 3'b011)
+						be_dec = 8'b00001000;
+					else if (addr_i[2:0] == 3'b100)
+						be_dec = 8'b00010000;
+					else if (addr_i[2:0] == 3'b101)
+						be_dec = 8'b00100000;
+					else if (addr_i[2:0] == 3'b110)
+						be_dec = 8'b01000000;
+					else
+						be_dec = 8'b10000000;
+				4'h2:
+					if (addr_i[2:1] == 2'b00)
+						be_dec = 8'b00000011;
+					else if (addr_i[2:1] == 2'b01)
+						be_dec = 8'b00001100;
+					else if (addr_i[2:1] == 2'b10)
+						be_dec = 8'b00110000;
+					else
+						be_dec = 8'b11000000;
+				4'h4:
+					if (addr_i[2] == 1'b0)
+						be_dec = 8'b00001111;
+					else
+						be_dec = 8'b11110000;
+				4'h8: be_dec = 8'b11111111;
+				default: be_dec = 8'b11111111;
+			endcase
+		else if (AXI_DATA_WIDTH == 32)
+			case (word_size_i)
+				4'h1:
+					if (addr_i[1:0] == 2'b00)
+						be_dec = 4'b0001;
+					else if (addr_i[1:0] == 2'b01)
+						be_dec = 4'b0010;
+					else if (addr_i[1:0] == 2'b10)
+						be_dec = 4'b0100;
+					else
+						be_dec = 4'b1000;
+				4'h2:
+					if (addr_i[1] == 1'b0)
+						be_dec = 4'b0011;
+					else
+						be_dec = 4'b1100;
+				4'h4: be_dec = 4'b1111;
+				4'h8: be_dec = 4'b1111;
+				default: be_dec = 4'b1111;
+			endcase
+	always @(*)
+		if (AXI_DATA_WIDTH == 64)
+			case (be_dec)
+				8'b00001111: swapped_data_i = {32'h00000000, data_i[63:32]};
+				8'b11110000: swapped_data_i = {data_i[63:32], 32'h00000000};
+				8'b00000011: swapped_data_i = {48'h000000000000, data_i[63:48]};
+				8'b00001100: swapped_data_i = {32'h00000000, data_i[63:48], 16'h0000};
+				8'b00110000: swapped_data_i = {16'h0000, data_i[63:48], 32'h00000000};
+				8'b11000000: swapped_data_i = {data_i[63:48], 48'h000000000000};
+				8'b00000001: swapped_data_i = {56'h00000000000000, data_i[63:56]};
+				8'b00000010: swapped_data_i = {48'h000000000000, data_i[63:56], 8'h00};
+				8'b00000100: swapped_data_i = {40'h0000000000, data_i[63:56], 16'h0000};
+				8'b00001000: swapped_data_i = {32'h00000000, data_i[63:56], 24'h000000};
+				8'b00010000: swapped_data_i = {24'h000000, data_i[63:56], 32'h00000000};
+				8'b00100000: swapped_data_i = {16'h0000, data_i[63:56], 40'h0000000000};
+				8'b01000000: swapped_data_i = {8'h00, data_i[63:56], 48'h000000000000};
+				8'b10000000: swapped_data_i = {data_i[63:56], 56'h00000000000000};
+				default: swapped_data_i = data_i;
+			endcase
+		else if (AXI_DATA_WIDTH == 32)
+			case (be_dec)
+				4'b1111: swapped_data_i = data_i[63:32];
+				4'b0011: swapped_data_i = {16'h0000, data_i[63:48]};
+				4'b1100: swapped_data_i = {data_i[63:48], 16'h0000};
+				4'b0001: swapped_data_i = {24'h000000, data_i[63:56]};
+				4'b0010: swapped_data_i = {16'h0000, data_i[63:56], 8'h00};
+				4'b0100: swapped_data_i = {8'h00, data_i[63:56], 16'h0000};
+				4'b1000: swapped_data_i = {data_i[63:56], 24'h000000};
+				default: swapped_data_i = data_i[63:32];
+			endcase
+	generate
+		if (AXI_DATA_WIDTH == 64) begin : genblk1
+			always @(*)
+				case (sel_reg)
+					8'b00001111: swapped_data_out = axi_master_r_data;
+					8'b11110000: swapped_data_out = {32'h00000000, axi_master_r_data[63:32]};
+					8'b00000011: swapped_data_out = axi_master_r_data;
+					8'b00001100: swapped_data_out = {16'h0000, axi_master_r_data[63:16]};
+					8'b00110000: swapped_data_out = {32'h00000000, axi_master_r_data[63:32]};
+					8'b11000000: swapped_data_out = {48'h000000000000, axi_master_r_data[63:48]};
+					8'b00000001: swapped_data_out = axi_master_r_data;
+					8'b00000010: swapped_data_out = {8'h00, axi_master_r_data[63:8]};
+					8'b00000100: swapped_data_out = {16'h0000, axi_master_r_data[63:16]};
+					8'b00001000: swapped_data_out = {24'h000000, axi_master_r_data[63:24]};
+					8'b00010000: swapped_data_out = {32'h00000000, axi_master_r_data[63:32]};
+					8'b00100000: swapped_data_out = {40'h0000000000, axi_master_r_data[63:40]};
+					8'b01000000: swapped_data_out = {48'h000000000000, axi_master_r_data[63:48]};
+					8'b10000000: swapped_data_out = {56'h00000000000000, axi_master_r_data[63:56]};
+					default: swapped_data_out = axi_master_r_data;
+				endcase
+		end
+		else if (AXI_DATA_WIDTH == 32) begin : genblk1
+			always @(*)
+				case (sel_reg)
+					4'b1111: swapped_data_out = axi_master_r_data;
+					4'b0011: swapped_data_out = axi_master_r_data;
+					4'b1100: swapped_data_out = {16'h0000, axi_master_r_data[31:16]};
+					4'b0001: swapped_data_out = axi_master_r_data;
+					4'b0010: swapped_data_out = {8'h00, axi_master_r_data[31:8]};
+					4'b0100: swapped_data_out = {16'h0000, axi_master_r_data[31:16]};
+					4'b1000: swapped_data_out = {24'h000000, axi_master_r_data[31:24]};
+					default: swapped_data_out = axi_master_r_data;
+				endcase
+		end
+	endgenerate
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			sel_reg <= 'h0;
+			addr_reg <= 'h0;
+			data_in_reg <= 'h0;
+			wr_reg <= 1'b0;
+		end
+		else if (strobe_i && rdy_o) begin
+			sel_reg <= be_dec;
+			addr_reg <= addr_i;
+			if (!rd_wrn_i)
+				data_in_reg <= swapped_data_i;
+			wr_reg <= ~rd_wrn_i;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			str_sync <= 1'b0;
+		else if (strobe_i && rdy_o)
+			str_sync <= ~str_sync;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			rdy_sync_tff1 <= 1'b0;
+			rdy_sync_tff2 <= 1'b0;
+			rdy_sync_tff2q <= 1'b0;
+		end
+		else begin
+			rdy_sync_tff1 <= rdy_sync;
+			rdy_sync_tff2 <= rdy_sync_tff1;
+			rdy_sync_tff2q <= rdy_sync_tff2;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			rdy_o <= 1'b1;
+		else if (strobe_i && rdy_o)
+			rdy_o <= 1'b0;
+		else if (rdy_sync_tff2 != rdy_sync_tff2q)
+			rdy_o <= 1'b1;
+	assign axi_master_ar_addr = addr_reg;
+	assign axi_master_aw_addr = addr_reg;
+	assign axi_master_w_data = data_in_reg;
+	assign axi_master_w_strb = sel_reg;
+	always @(*)
+		if (AXI_DATA_WIDTH == 64)
+			data_o = data_out_reg;
+		else if (AXI_DATA_WIDTH == 32)
+			data_o = {32'h00000000, data_out_reg};
+	assign err_o = err_reg;
+	assign axi_master_aw_prot = 'h0;
+	assign axi_master_aw_region = 'h0;
+	assign axi_master_aw_len = 'h0;
+	assign axi_master_aw_burst = 'h0;
+	assign axi_master_aw_lock = 'h0;
+	assign axi_master_aw_cache = 'h0;
+	assign axi_master_aw_qos = 'h0;
+	assign axi_master_aw_id = 'h0;
+	assign axi_master_aw_user = 'h0;
+	assign axi_master_ar_prot = 'h0;
+	assign axi_master_ar_region = 'h0;
+	assign axi_master_ar_len = 'h0;
+	assign axi_master_ar_burst = 'h0;
+	assign axi_master_ar_lock = 'h0;
+	assign axi_master_ar_cache = 'h0;
+	assign axi_master_ar_qos = 'h0;
+	assign axi_master_ar_id = 'h0;
+	assign axi_master_ar_user = 'h0;
+	assign axi_master_w_user = 'h0;
+	assign axi_master_w_last = 1'b1;
+	always @(*)
+		case (word_size_i)
+			4'h1: begin
+				axi_master_aw_size = 3'b000;
+				axi_master_ar_size = 3'b000;
+			end
+			4'h2: begin
+				axi_master_aw_size = 3'b001;
+				axi_master_ar_size = 3'b001;
+			end
+			4'h4: begin
+				axi_master_aw_size = 3'b010;
+				axi_master_ar_size = 3'b010;
+			end
+			4'h8: begin
+				axi_master_aw_size = 3'b011;
+				axi_master_ar_size = 3'b011;
+			end
+			default: begin
+				axi_master_aw_size = 3'b011;
+				axi_master_ar_size = 3'b011;
+			end
+		endcase
+	always @(posedge axi_aclk or negedge axi_aresetn)
+		if (!axi_aresetn) begin
+			str_sync_wbff1 <= 1'b0;
+			str_sync_wbff2 <= 1'b0;
+			str_sync_wbff2q <= 1'b0;
+		end
+		else begin
+			str_sync_wbff1 <= str_sync;
+			str_sync_wbff2 <= str_sync_wbff1;
+			str_sync_wbff2q <= str_sync_wbff2;
+		end
+	assign start_toggle = str_sync_wbff2 != str_sync_wbff2q;
+	always @(posedge axi_aclk or negedge axi_aresetn)
+		if (!axi_aresetn)
+			err_reg <= 1'b0;
+		else if (err_en)
+			err_reg <= (wr_reg ? (axi_master_b_resp == 2'b00 ? 1'b0 : 1'b1) : (axi_master_r_resp == 2'b00 ? 1'b0 : 1'b1));
+	always @(posedge axi_aclk or negedge axi_aresetn)
+		if (!axi_aresetn)
+			data_out_reg <= 32'h00000000;
+		else if (data_o_en)
+			data_out_reg <= swapped_data_out;
+	always @(posedge axi_aclk or negedge axi_aresetn)
+		if (!axi_aresetn)
+			rdy_sync <= 1'b0;
+		else if (rdy_sync_en)
+			rdy_sync <= ~rdy_sync;
+	always @(posedge axi_aclk or negedge axi_aresetn)
+		if (~axi_aresetn)
+			axi_fsm_state <= 2'd0;
+		else
+			axi_fsm_state <= next_fsm_state;
+	always @(*) begin
+		axi_master_aw_valid = 1'b0;
+		axi_master_w_valid = 1'b0;
+		axi_master_ar_valid = 1'b0;
+		axi_master_b_ready = 1'b0;
+		axi_master_r_ready = 1'b0;
+		next_fsm_state = axi_fsm_state;
+		rdy_sync_en = 1'b0;
+		data_o_en = 1'b0;
+		err_en = 1'b0;
+		case (axi_fsm_state)
+			2'd0:
+				if (start_toggle)
+					next_fsm_state = 2'd1;
+				else
+					next_fsm_state = 2'd0;
+			2'd1: begin
+				if (wr_reg)
+					axi_master_aw_valid = 1'b1;
+				else
+					axi_master_ar_valid = 1'b1;
+				if (wr_reg && axi_master_aw_ready)
+					next_fsm_state = 2'd2;
+				else if (!wr_reg && axi_master_ar_ready)
+					next_fsm_state = 2'd3;
+			end
+			2'd2: begin
+				axi_master_w_valid = 1'b1;
+				if (axi_master_w_ready)
+					next_fsm_state = 2'd3;
+			end
+			2'd3: begin
+				if (wr_reg)
+					axi_master_b_ready = 1'b1;
+				else
+					axi_master_r_ready = 1'b1;
+				if (wr_reg && axi_master_b_valid) begin
+					next_fsm_state = 2'd0;
+					rdy_sync_en = 1'b1;
+					err_en = 1'b1;
+				end
+				else if (!wr_reg && axi_master_r_valid) begin
+					data_o_en = 1'b1;
+					next_fsm_state = 2'd0;
+					rdy_sync_en = 1'b1;
+					err_en = 1'b1;
+				end
+			end
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_defines.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_defines.v
new file mode 100644
index 0000000..b9fe191
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_defines.v
@@ -0,0 +1,94 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  adbg_wb_defines.v                                           ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the SoC Advanced Debug Interface.      ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2008-2010        Authors                       ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: adbg_wb_defines.v,v $
+// Revision 1.4  2010-01-10 22:54:11  Nathan
+// Update copyright dates
+//
+// Revision 1.3  2009/05/17 20:54:57  Nathan
+// Changed email address to opencores.org
+//
+// Revision 1.2  2009/05/04 00:50:11  Nathan
+// Changed the AXI BIU to use big-endian byte ordering, to match the OR1000.  Kept little-endian ordering as a compile-time option in case this is ever used with a little-endian CPU.
+//
+// Revision 1.1  2008/07/22 20:28:32  Nathan
+// Changed names of all files and modules (prefixed an a, for advanced).  Cleanup, indenting.  No functional changes.
+//
+
+// Endian-ness of the Wishbone interface.
+// Default is BIG endian, to match the OR1200.
+// If using a LITTLE endian CPU, e.g. an x86, un-comment this line.
+//`define DBG_AXI_LITTLE_ENDIAN
+
+// These relate to the number of internal registers, and how
+// many bits are required in the Reg. Select register
+`define DBG_AXI_REGSELECT_SIZE 1
+`define DBG_AXI_NUM_INTREG 1
+
+// Register index definitions for module-internal registers
+// The AXI module has just 1, the error register
+`define DBG_AXI_INTREG_ERROR 1'b0
+
+// Valid commands/opcodes for the wishbone debug module
+// 0000  NOP
+// 0001  Write burst, 8-bit access
+// 0010  Write burst, 16-bit access
+// 0011  Write burst, 32-bit access
+// 0100  Write burst, 64-bit access
+// 0101  Read burst, 8-bit access
+// 0110  Read burst, 16-bit access
+// 0111  Read burst, 32-bit access
+// 1000  Read burst, 64-bit access
+// 1001  Internal register select/write
+// 1010 - 1100 Reserved
+// 1101  Internal register select
+// 1110 - 1111 Reserved
+
+`define DBG_AXI_CMD_BWRITE8  4'h1
+`define DBG_AXI_CMD_BWRITE16 4'h2
+`define DBG_AXI_CMD_BWRITE32 4'h3
+`define DBG_AXI_CMD_BWRITE64 4'h4
+`define DBG_AXI_CMD_BREAD8   4'h5
+`define DBG_AXI_CMD_BREAD16  4'h6
+`define DBG_AXI_CMD_BREAD32  4'h7
+`define DBG_AXI_CMD_BREAD64  4'h8
+`define DBG_AXI_CMD_IREG_WR  4'h9
+`define DBG_AXI_CMD_IREG_SEL 4'hd
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_module.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_module.v
new file mode 100644
index 0000000..bd65b3c
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axi_module.v
@@ -0,0 +1,630 @@
+module adbg_axi_module 
+#(
+	parameter AXI_ADDR_WIDTH = 32,
+	parameter AXI_DATA_WIDTH = 64,
+	parameter AXI_USER_WIDTH = 6,
+	parameter AXI_ID_WIDTH   = 3
+)
+(
+	tck_i,
+	module_tdo_o,
+	tdi_i,
+	capture_dr_i,
+	shift_dr_i,
+	update_dr_i,
+	data_register_i,
+	module_select_i,
+	top_inhibit_o,
+	trstn_i,
+	axi_aclk,
+	axi_aresetn,
+	axi_master_aw_valid,
+	axi_master_aw_addr,
+	axi_master_aw_prot,
+	axi_master_aw_region,
+	axi_master_aw_len,
+	axi_master_aw_size,
+	axi_master_aw_burst,
+	axi_master_aw_lock,
+	axi_master_aw_cache,
+	axi_master_aw_qos,
+	axi_master_aw_id,
+	axi_master_aw_user,
+	axi_master_aw_ready,
+	axi_master_ar_valid,
+	axi_master_ar_addr,
+	axi_master_ar_prot,
+	axi_master_ar_region,
+	axi_master_ar_len,
+	axi_master_ar_size,
+	axi_master_ar_burst,
+	axi_master_ar_lock,
+	axi_master_ar_cache,
+	axi_master_ar_qos,
+	axi_master_ar_id,
+	axi_master_ar_user,
+	axi_master_ar_ready,
+	axi_master_w_valid,
+	axi_master_w_data,
+	axi_master_w_strb,
+	axi_master_w_user,
+	axi_master_w_last,
+	axi_master_w_ready,
+	axi_master_r_valid,
+	axi_master_r_data,
+	axi_master_r_resp,
+	axi_master_r_last,
+	axi_master_r_id,
+	axi_master_r_user,
+	axi_master_r_ready,
+	axi_master_b_valid,
+	axi_master_b_resp,
+	axi_master_b_id,
+	axi_master_b_user,
+	axi_master_b_ready
+);
+	//parameter AXI_ADDR_WIDTH = 32;
+	//parameter AXI_DATA_WIDTH = 64;
+	//parameter AXI_USER_WIDTH = 6;
+	//parameter AXI_ID_WIDTH = 3;
+	input wire tck_i;
+	output reg module_tdo_o;
+	input wire tdi_i;
+	input wire capture_dr_i;
+	input wire shift_dr_i;
+	input wire update_dr_i;
+	input wire [63:0] data_register_i;
+	input wire module_select_i;
+	output reg top_inhibit_o;
+	input wire trstn_i;
+	input wire axi_aclk;
+	input wire axi_aresetn;
+	output wire axi_master_aw_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_aw_addr;
+	output wire [2:0] axi_master_aw_prot;
+	output wire [3:0] axi_master_aw_region;
+	output wire [7:0] axi_master_aw_len;
+	output wire [2:0] axi_master_aw_size;
+	output wire [1:0] axi_master_aw_burst;
+	output wire axi_master_aw_lock;
+	output wire [3:0] axi_master_aw_cache;
+	output wire [3:0] axi_master_aw_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_aw_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_aw_user;
+	input wire axi_master_aw_ready;
+	output wire axi_master_ar_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_ar_addr;
+	output wire [2:0] axi_master_ar_prot;
+	output wire [3:0] axi_master_ar_region;
+	output wire [7:0] axi_master_ar_len;
+	output wire [2:0] axi_master_ar_size;
+	output wire [1:0] axi_master_ar_burst;
+	output wire axi_master_ar_lock;
+	output wire [3:0] axi_master_ar_cache;
+	output wire [3:0] axi_master_ar_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_ar_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_ar_user;
+	input wire axi_master_ar_ready;
+	output wire axi_master_w_valid;
+	output wire [AXI_DATA_WIDTH - 1:0] axi_master_w_data;
+	output wire [(AXI_DATA_WIDTH / 8) - 1:0] axi_master_w_strb;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_w_user;
+	output wire axi_master_w_last;
+	input wire axi_master_w_ready;
+	input wire axi_master_r_valid;
+	input wire [AXI_DATA_WIDTH - 1:0] axi_master_r_data;
+	input wire [1:0] axi_master_r_resp;
+	input wire axi_master_r_last;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_r_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_r_user;
+	output wire axi_master_r_ready;
+	input wire axi_master_b_valid;
+	input wire [1:0] axi_master_b_resp;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_b_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_b_user;
+	output wire axi_master_b_ready;
+	reg [31:0] address_counter;
+	reg [5:0] bit_count;
+	reg [15:0] word_count;
+	reg [3:0] operation;
+	reg [64:0] data_out_shift_reg;
+	reg [0:0] internal_register_select;
+	reg [32:0] internal_reg_error;
+	reg addr_sel;
+	reg addr_ct_en;
+	reg op_reg_en;
+	reg bit_ct_en;
+	reg bit_ct_rst;
+	reg word_ct_sel;
+	reg word_ct_en;
+	reg out_reg_ld_en;
+	reg out_reg_shift_en;
+	reg out_reg_data_sel;
+	reg [1:0] tdo_output_sel;
+	reg biu_strobe;
+	reg crc_clr;
+	reg crc_en;
+	reg crc_in_sel;
+	reg crc_shift_en;
+	reg regsel_ld_en;
+	reg intreg_ld_en;
+	reg error_reg_en;
+	reg biu_clr_err;
+	wire word_count_zero;
+	wire bit_count_max;
+	wire module_cmd;
+	wire biu_ready;
+	wire biu_err;
+	wire burst_read;
+	wire burst_write;
+	wire intreg_instruction;
+	wire intreg_write;
+	reg rd_op;
+	wire crc_match;
+	wire bit_count_32;
+	reg [5:0] word_size_bits;
+	reg [3:0] word_size_bytes;
+	wire [32:0] incremented_address;
+	wire [31:0] data_to_addr_counter;
+	wire [15:0] data_to_word_counter;
+	wire [15:0] decremented_word_count;
+	wire [31:0] address_data_in;
+	wire [15:0] count_data_in;
+	wire [3:0] operation_in;
+	wire [63:0] data_to_biu;
+	wire [63:0] data_from_biu;
+	wire [31:0] crc_data_out;
+	wire crc_data_in;
+	wire crc_serial_out;
+	wire [0:0] reg_select_data;
+	wire [64:0] out_reg_data;
+	reg [64:0] data_from_internal_reg;
+	wire biu_rst;
+	reg [3:0] module_state;
+	reg [3:0] module_next_state;
+	assign module_cmd = ~data_register_i[63];
+	assign operation_in = data_register_i[62:59];
+	assign address_data_in = data_register_i[58:27];
+	assign count_data_in = data_register_i[26:11];
+	assign data_to_biu = {tdi_i, data_register_i[63:1]};
+	assign reg_select_data = data_register_i[58:57];
+	assign intreg_instruction = (operation_in == 4'h9) | (operation_in == 4'hd);
+	assign intreg_write = operation_in == 4'h9;
+	assign burst_write = (((operation_in == 4'h1) | (operation_in == 4'h2)) | (operation_in == 4'h3)) | (operation_in == 4'h4);
+	assign burst_read = (((operation_in == 4'h5) | (operation_in == 4'h6)) | (operation_in == 4'h7)) | (operation_in == 4'h8);
+	always @(*)
+		case (operation)
+			4'h1: begin
+				word_size_bits = 6'd7;
+				word_size_bytes = 4'd1;
+				rd_op = 1'b0;
+			end
+			4'h2: begin
+				word_size_bits = 6'd15;
+				word_size_bytes = 4'd2;
+				rd_op = 1'b0;
+			end
+			4'h3: begin
+				word_size_bits = 6'd31;
+				word_size_bytes = 4'd4;
+				rd_op = 1'b0;
+			end
+			4'h4: begin
+				word_size_bits = 6'd63;
+				word_size_bytes = 4'd8;
+				rd_op = 1'b0;
+			end
+			4'h5: begin
+				word_size_bits = 6'd7;
+				word_size_bytes = 4'd1;
+				rd_op = 1'b1;
+			end
+			4'h6: begin
+				word_size_bits = 6'd15;
+				word_size_bytes = 4'd2;
+				rd_op = 1'b1;
+			end
+			4'h7: begin
+				word_size_bits = 6'd31;
+				word_size_bytes = 4'd4;
+				rd_op = 1'b1;
+			end
+			4'h8: begin
+				word_size_bits = 6'd63;
+				word_size_bytes = 4'd4;
+				rd_op = 1'b1;
+			end
+			default: begin
+				word_size_bits = 6'b000000;
+				word_size_bytes = 4'b0000;
+				rd_op = 1'b0;
+			end
+		endcase
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			internal_register_select <= 1'h0;
+		else if (regsel_ld_en)
+			internal_register_select <= reg_select_data;
+	always @(*)
+		case (internal_register_select)
+			1'b0: data_from_internal_reg = internal_reg_error;
+			default: data_from_internal_reg = internal_reg_error;
+		endcase
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			internal_reg_error <= 33'h000000000;
+		else if (intreg_ld_en && (reg_select_data == 1'b0)) begin
+			if (data_register_i[46])
+				internal_reg_error[0] <= 1'b0;
+		end
+		else if (error_reg_en && !internal_reg_error[0]) begin
+			if (biu_err || !biu_ready)
+				internal_reg_error[0] <= 1'b1;
+			else if (biu_strobe)
+				internal_reg_error[32:1] <= address_counter;
+		end
+		else if (biu_strobe && !internal_reg_error[0])
+			internal_reg_error[32:1] <= address_counter;
+	assign data_to_addr_counter = (addr_sel ? incremented_address[31:0] : address_data_in);
+	assign incremented_address = address_counter + word_size_bytes;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			address_counter <= 32'h00000000;
+		else if (addr_ct_en)
+			address_counter <= data_to_addr_counter;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			operation <= 4'h0;
+		else if (op_reg_en)
+			operation <= operation_in;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			bit_count <= 6'h00;
+		else if (bit_ct_rst)
+			bit_count <= 6'h00;
+		else if (bit_ct_en)
+			bit_count <= bit_count + 6'h01;
+	assign bit_count_max = (bit_count == word_size_bits ? 1'b1 : 1'b0);
+	assign bit_count_32 = (bit_count == 6'h20 ? 1'b1 : 1'b0);
+	assign data_to_word_counter = (word_ct_sel ? decremented_word_count : count_data_in);
+	assign decremented_word_count = word_count - 16'h0001;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			word_count <= 16'h0000;
+		else if (word_ct_en)
+			word_count <= data_to_word_counter;
+	assign word_count_zero = word_count == 16'h0000;
+	assign out_reg_data = (out_reg_data_sel ? data_from_internal_reg : {1'b0, data_from_biu});
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			data_out_shift_reg <= 'h0;
+		else if (out_reg_ld_en)
+			data_out_shift_reg <= out_reg_data;
+		else if (out_reg_shift_en)
+			data_out_shift_reg <= {1'b0, data_out_shift_reg[64:1]};
+	always @(*)
+		if (tdo_output_sel == 2'h0)
+			module_tdo_o = biu_ready;
+		else if (tdo_output_sel == 2'h1)
+			module_tdo_o = data_out_shift_reg[0];
+		else if (tdo_output_sel == 2'h2)
+			module_tdo_o = crc_match;
+		else
+			module_tdo_o = crc_serial_out;
+	adbg_axi_biu #(
+		.AXI_ADDR_WIDTH(AXI_ADDR_WIDTH),
+		.AXI_DATA_WIDTH(AXI_DATA_WIDTH),
+		.AXI_USER_WIDTH(AXI_USER_WIDTH),
+		.AXI_ID_WIDTH(AXI_ID_WIDTH)
+	) axi_biu_i(
+		.tck_i(tck_i),
+		.trstn_i(trstn_i),
+		.data_i(data_to_biu),
+		.data_o(data_from_biu),
+		.addr_i(address_counter),
+		.strobe_i(biu_strobe),
+		.rd_wrn_i(rd_op),
+		.rdy_o(biu_ready),
+		.err_o(biu_err),
+		.word_size_i(word_size_bytes),
+		.axi_aclk(axi_aclk),
+		.axi_aresetn(axi_aresetn),
+		.axi_master_aw_valid(axi_master_aw_valid),
+		.axi_master_aw_addr(axi_master_aw_addr),
+		.axi_master_aw_prot(axi_master_aw_prot),
+		.axi_master_aw_region(axi_master_aw_region),
+		.axi_master_aw_len(axi_master_aw_len),
+		.axi_master_aw_size(axi_master_aw_size),
+		.axi_master_aw_burst(axi_master_aw_burst),
+		.axi_master_aw_lock(axi_master_aw_lock),
+		.axi_master_aw_cache(axi_master_aw_cache),
+		.axi_master_aw_qos(axi_master_aw_qos),
+		.axi_master_aw_id(axi_master_aw_id),
+		.axi_master_aw_user(axi_master_aw_user),
+		.axi_master_aw_ready(axi_master_aw_ready),
+		.axi_master_ar_valid(axi_master_ar_valid),
+		.axi_master_ar_addr(axi_master_ar_addr),
+		.axi_master_ar_prot(axi_master_ar_prot),
+		.axi_master_ar_region(axi_master_ar_region),
+		.axi_master_ar_len(axi_master_ar_len),
+		.axi_master_ar_size(axi_master_ar_size),
+		.axi_master_ar_burst(axi_master_ar_burst),
+		.axi_master_ar_lock(axi_master_ar_lock),
+		.axi_master_ar_cache(axi_master_ar_cache),
+		.axi_master_ar_qos(axi_master_ar_qos),
+		.axi_master_ar_id(axi_master_ar_id),
+		.axi_master_ar_user(axi_master_ar_user),
+		.axi_master_ar_ready(axi_master_ar_ready),
+		.axi_master_w_valid(axi_master_w_valid),
+		.axi_master_w_data(axi_master_w_data),
+		.axi_master_w_strb(axi_master_w_strb),
+		.axi_master_w_user(axi_master_w_user),
+		.axi_master_w_last(axi_master_w_last),
+		.axi_master_w_ready(axi_master_w_ready),
+		.axi_master_r_valid(axi_master_r_valid),
+		.axi_master_r_data(axi_master_r_data),
+		.axi_master_r_resp(axi_master_r_resp),
+		.axi_master_r_last(axi_master_r_last),
+		.axi_master_r_id(axi_master_r_id),
+		.axi_master_r_user(axi_master_r_user),
+		.axi_master_r_ready(axi_master_r_ready),
+		.axi_master_b_valid(axi_master_b_valid),
+		.axi_master_b_resp(axi_master_b_resp),
+		.axi_master_b_id(axi_master_b_id),
+		.axi_master_b_user(axi_master_b_user),
+		.axi_master_b_ready(axi_master_b_ready)
+	);
+	assign crc_data_in = (crc_in_sel ? tdi_i : data_out_shift_reg[0]);
+	adbg_crc32 axi_crc_i(
+		.clk(tck_i),
+		.data(crc_data_in),
+		.enable(crc_en),
+		.shift(crc_shift_en),
+		.clr(crc_clr),
+		.rstn(trstn_i),
+		.crc_out(crc_data_out),
+		.serial_out(crc_serial_out)
+	);
+	assign crc_match = (data_register_i[63:32] == crc_data_out ? 1'b1 : 1'b0);
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_state <= 4'd0;
+		else
+			module_state <= module_next_state;
+	always @(*)
+		case (module_state)
+			4'd0:
+				if (((module_cmd && module_select_i) && update_dr_i) && burst_read)
+					module_next_state = 4'd1;
+				else if (((module_cmd && module_select_i) && update_dr_i) && burst_write)
+					module_next_state = 4'd5;
+				else
+					module_next_state = 4'd0;
+			4'd1:
+				if (word_count_zero)
+					module_next_state = 4'd0;
+				else
+					module_next_state = 4'd2;
+			4'd2:
+				if (module_select_i && capture_dr_i)
+					module_next_state = 4'd3;
+				else
+					module_next_state = 4'd2;
+			4'd3:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (biu_ready)
+					module_next_state = 4'd4;
+				else
+					module_next_state = 4'd3;
+			4'd4:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (bit_count_max && word_count_zero)
+					module_next_state = 4'd9;
+				else
+					module_next_state = 4'd4;
+			4'd9:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else
+					module_next_state = 4'd9;
+			4'd5:
+				if (word_count_zero)
+					module_next_state = 4'd0;
+				else if (module_select_i && capture_dr_i)
+					module_next_state = 4'd6;
+				else
+					module_next_state = 4'd5;
+			4'd6:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (module_select_i && data_register_i[63])
+					module_next_state = 4'd7;
+				else
+					module_next_state = 4'd6;
+			4'd7:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (bit_count_max) begin
+					if (word_count_zero)
+						module_next_state = 4'd10;
+					else
+						module_next_state = 4'd7;
+				end
+				else
+					module_next_state = 4'd7;
+			4'd8:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (word_count_zero)
+					module_next_state = 4'd10;
+				else
+					module_next_state = 4'd7;
+			4'd10:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else if (bit_count_32)
+					module_next_state = 4'd11;
+				else
+					module_next_state = 4'd10;
+			4'd11:
+				if (update_dr_i)
+					module_next_state = 4'd0;
+				else
+					module_next_state = 4'd11;
+			default: module_next_state = 4'd0;
+		endcase
+	always @(*) begin
+		addr_sel = 1'b1;
+		addr_ct_en = 1'b0;
+		op_reg_en = 1'b0;
+		bit_ct_en = 1'b0;
+		bit_ct_rst = 1'b0;
+		word_ct_sel = 1'b1;
+		word_ct_en = 1'b0;
+		out_reg_ld_en = 1'b0;
+		out_reg_shift_en = 1'b0;
+		tdo_output_sel = 2'b01;
+		biu_strobe = 1'b0;
+		crc_clr = 1'b0;
+		crc_en = 1'b0;
+		crc_in_sel = 1'b0;
+		crc_shift_en = 1'b0;
+		out_reg_data_sel = 1'b1;
+		regsel_ld_en = 1'b0;
+		intreg_ld_en = 1'b0;
+		error_reg_en = 1'b0;
+		biu_clr_err = 1'b0;
+		top_inhibit_o = 1'b0;
+		case (module_state)
+			4'd0: begin
+				addr_sel = 1'b0;
+				word_ct_sel = 1'b0;
+				if (module_select_i & shift_dr_i)
+					out_reg_shift_en = 1'b1;
+				if (module_select_i & capture_dr_i) begin
+					out_reg_data_sel = 1'b1;
+					out_reg_ld_en = 1'b1;
+				end
+				if ((module_select_i & module_cmd) & update_dr_i) begin
+					if (intreg_instruction)
+						regsel_ld_en = 1'b1;
+					if (intreg_write)
+						intreg_ld_en = 1'b1;
+				end
+				if (module_next_state != 4'd0) begin
+					addr_ct_en = 1'b1;
+					op_reg_en = 1'b1;
+					bit_ct_rst = 1'b1;
+					word_ct_en = 1'b1;
+					crc_clr = 1'b1;
+				end
+			end
+			4'd1:
+				if (!word_count_zero) begin
+					biu_strobe = 1'b1;
+					addr_sel = 1'b1;
+					addr_ct_en = 1'b1;
+				end
+			4'd2:
+				;
+			4'd3: begin
+				tdo_output_sel = 2'h0;
+				top_inhibit_o = 1'b1;
+				if (module_next_state == 4'd4) begin
+					error_reg_en = 1'b1;
+					out_reg_data_sel = 1'b0;
+					out_reg_ld_en = 1'b1;
+					bit_ct_rst = 1'b1;
+					word_ct_sel = 1'b1;
+					word_ct_en = 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe = 1'b1;
+						addr_sel = 1'b1;
+						addr_ct_en = 1'b1;
+					end
+				end
+			end
+			4'd4: begin
+				tdo_output_sel = 2'h1;
+				out_reg_shift_en = 1'b1;
+				bit_ct_en = 1'b1;
+				crc_en = 1'b1;
+				crc_in_sel = 1'b0;
+				top_inhibit_o = 1'b1;
+				if (bit_count_max) begin
+					error_reg_en = 1'b1;
+					out_reg_data_sel = 1'b0;
+					out_reg_ld_en = 1'b1;
+					bit_ct_rst = 1'b1;
+					word_ct_sel = 1'b1;
+					word_ct_en = 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe = 1'b1;
+						addr_sel = 1'b1;
+						addr_ct_en = 1'b1;
+					end
+				end
+			end
+			4'd9: begin
+				tdo_output_sel = 2'h3;
+				crc_shift_en = 1'b1;
+				top_inhibit_o = 1'b1;
+			end
+			4'd5:
+				;
+			4'd6: begin
+				tdo_output_sel = 2'h1;
+				top_inhibit_o = 1'b1;
+				if (module_next_state == 4'd7) begin
+					biu_clr_err = 1'b1;
+					bit_ct_en = 1'b1;
+					word_ct_sel = 1'b1;
+					word_ct_en = 1'b1;
+					crc_en = 1'b1;
+					crc_in_sel = 1'b1;
+				end
+			end
+			4'd7: begin
+				bit_ct_en = 1'b1;
+				tdo_output_sel = 2'h1;
+				crc_en = 1'b1;
+				crc_in_sel = 1'b1;
+				top_inhibit_o = 1'b1;
+				if (bit_count_max) begin
+					error_reg_en = 1'b1;
+					bit_ct_rst = 1'b1;
+					biu_strobe = 1'b1;
+					addr_ct_en = 1'b1;
+					word_ct_sel = 1'b1;
+					word_ct_en = 1'b1;
+				end
+			end
+			4'd8: begin
+				tdo_output_sel = 2'h0;
+				error_reg_en = 1'b1;
+				biu_strobe = 1'b1;
+				word_ct_sel = 1'b1;
+				word_ct_en = 1'b1;
+				bit_ct_rst = 1'b1;
+				addr_ct_en = 1'b1;
+				top_inhibit_o = 1'b1;
+			end
+			4'd10: begin
+				bit_ct_en = 1'b1;
+				top_inhibit_o = 1'b1;
+				if (module_next_state == 4'd11)
+					tdo_output_sel = 2'h2;
+			end
+			4'd11: begin
+				tdo_output_sel = 2'h2;
+				top_inhibit_o = 1'b1;
+				if (module_next_state == 4'd0)
+					error_reg_en = 1'b1;
+			end
+			default:
+				;
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axionly_top.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axionly_top.v
new file mode 100644
index 0000000..11ab4dc
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_axionly_top.v
@@ -0,0 +1,225 @@
+module adbg_axionly_top 
+#(
+	parameter NB_CORES       = 4,
+	parameter AXI_ADDR_WIDTH = 32,
+	parameter AXI_DATA_WIDTH = 64,
+	parameter AXI_USER_WIDTH = 6,
+	parameter AXI_ID_WIDTH   = 3
+)
+(
+	tck_i,
+	tdi_i,
+	tdo_o,
+	trstn_i,
+	shift_dr_i,
+	pause_dr_i,
+	update_dr_i,
+	capture_dr_i,
+	debug_select_i,
+	axi_aclk,
+	axi_aresetn,
+	axi_master_aw_valid,
+	axi_master_aw_addr,
+	axi_master_aw_prot,
+	axi_master_aw_region,
+	axi_master_aw_len,
+	axi_master_aw_size,
+	axi_master_aw_burst,
+	axi_master_aw_lock,
+	axi_master_aw_cache,
+	axi_master_aw_qos,
+	axi_master_aw_id,
+	axi_master_aw_user,
+	axi_master_aw_ready,
+	axi_master_ar_valid,
+	axi_master_ar_addr,
+	axi_master_ar_prot,
+	axi_master_ar_region,
+	axi_master_ar_len,
+	axi_master_ar_size,
+	axi_master_ar_burst,
+	axi_master_ar_lock,
+	axi_master_ar_cache,
+	axi_master_ar_qos,
+	axi_master_ar_id,
+	axi_master_ar_user,
+	axi_master_ar_ready,
+	axi_master_w_valid,
+	axi_master_w_data,
+	axi_master_w_strb,
+	axi_master_w_user,
+	axi_master_w_last,
+	axi_master_w_ready,
+	axi_master_r_valid,
+	axi_master_r_data,
+	axi_master_r_resp,
+	axi_master_r_last,
+	axi_master_r_id,
+	axi_master_r_user,
+	axi_master_r_ready,
+	axi_master_b_valid,
+	axi_master_b_resp,
+	axi_master_b_id,
+	axi_master_b_user,
+	axi_master_b_ready
+);
+	//parameter NB_CORES = 4;
+	//parameter AXI_ADDR_WIDTH = 32;
+	//parameter AXI_DATA_WIDTH = 64;
+	//parameter AXI_USER_WIDTH = 6;
+	//parameter AXI_ID_WIDTH = 3;
+	input wire tck_i;
+	input wire tdi_i;
+	output reg tdo_o;
+	input wire trstn_i;
+	input wire shift_dr_i;
+	input wire pause_dr_i;
+	input wire update_dr_i;
+	input wire capture_dr_i;
+	input wire debug_select_i;
+	input wire axi_aclk;
+	input wire axi_aresetn;
+	output wire axi_master_aw_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_aw_addr;
+	output wire [2:0] axi_master_aw_prot;
+	output wire [3:0] axi_master_aw_region;
+	output wire [7:0] axi_master_aw_len;
+	output wire [2:0] axi_master_aw_size;
+	output wire [1:0] axi_master_aw_burst;
+	output wire axi_master_aw_lock;
+	output wire [3:0] axi_master_aw_cache;
+	output wire [3:0] axi_master_aw_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_aw_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_aw_user;
+	input wire axi_master_aw_ready;
+	output wire axi_master_ar_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_ar_addr;
+	output wire [2:0] axi_master_ar_prot;
+	output wire [3:0] axi_master_ar_region;
+	output wire [7:0] axi_master_ar_len;
+	output wire [2:0] axi_master_ar_size;
+	output wire [1:0] axi_master_ar_burst;
+	output wire axi_master_ar_lock;
+	output wire [3:0] axi_master_ar_cache;
+	output wire [3:0] axi_master_ar_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_ar_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_ar_user;
+	input wire axi_master_ar_ready;
+	output wire axi_master_w_valid;
+	output wire [AXI_DATA_WIDTH - 1:0] axi_master_w_data;
+	output wire [(AXI_DATA_WIDTH / 8) - 1:0] axi_master_w_strb;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_w_user;
+	output wire axi_master_w_last;
+	input wire axi_master_w_ready;
+	input wire axi_master_r_valid;
+	input wire [AXI_DATA_WIDTH - 1:0] axi_master_r_data;
+	input wire [1:0] axi_master_r_resp;
+	input wire axi_master_r_last;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_r_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_r_user;
+	output wire axi_master_r_ready;
+	input wire axi_master_b_valid;
+	input wire [1:0] axi_master_b_resp;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_b_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_b_user;
+	output wire axi_master_b_ready;
+	wire tdo_axi;
+	wire tdo_cpu;
+	reg [63:0] input_shift_reg;
+	reg [4:0] module_id_reg;
+	wire select_cmd;
+	wire [4:0] module_id_in;
+	reg [1:0] module_selects;
+	wire select_inhibit;
+	wire [1:0] module_inhibit;
+	integer j;
+	assign tdo_cpu = 1'b0;
+	assign select_cmd = input_shift_reg[63];
+	assign module_id_in = input_shift_reg[62:58];
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_id_reg <= 5'h00;
+		else if (((debug_select_i && select_cmd) && update_dr_i) && !select_inhibit)
+			module_id_reg <= module_id_in;
+	always @(*)
+		if (module_id_reg == 0)
+			module_selects = 2'b01;
+		else
+			module_selects = 2'b10;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			input_shift_reg <= 'h0;
+		else if (debug_select_i && shift_dr_i)
+			input_shift_reg <= {tdi_i, input_shift_reg[63:1]};
+	adbg_axi_module #(
+		.AXI_ADDR_WIDTH(AXI_ADDR_WIDTH),
+		.AXI_DATA_WIDTH(AXI_DATA_WIDTH),
+		.AXI_USER_WIDTH(AXI_USER_WIDTH),
+		.AXI_ID_WIDTH(AXI_ID_WIDTH)
+	) i_dbg_axi(
+		.tck_i(tck_i),
+		.module_tdo_o(tdo_axi),
+		.tdi_i(tdi_i),
+		.capture_dr_i(capture_dr_i),
+		.shift_dr_i(shift_dr_i),
+		.update_dr_i(update_dr_i),
+		.data_register_i(input_shift_reg),
+		.module_select_i(module_selects[0]),
+		.top_inhibit_o(module_inhibit[0]),
+		.trstn_i(trstn_i),
+		.axi_aclk(axi_aclk),
+		.axi_aresetn(axi_aresetn),
+		.axi_master_aw_valid(axi_master_aw_valid),
+		.axi_master_aw_addr(axi_master_aw_addr),
+		.axi_master_aw_prot(axi_master_aw_prot),
+		.axi_master_aw_region(axi_master_aw_region),
+		.axi_master_aw_len(axi_master_aw_len),
+		.axi_master_aw_size(axi_master_aw_size),
+		.axi_master_aw_burst(axi_master_aw_burst),
+		.axi_master_aw_lock(axi_master_aw_lock),
+		.axi_master_aw_cache(axi_master_aw_cache),
+		.axi_master_aw_qos(axi_master_aw_qos),
+		.axi_master_aw_id(axi_master_aw_id),
+		.axi_master_aw_user(axi_master_aw_user),
+		.axi_master_aw_ready(axi_master_aw_ready),
+		.axi_master_ar_valid(axi_master_ar_valid),
+		.axi_master_ar_addr(axi_master_ar_addr),
+		.axi_master_ar_prot(axi_master_ar_prot),
+		.axi_master_ar_region(axi_master_ar_region),
+		.axi_master_ar_len(axi_master_ar_len),
+		.axi_master_ar_size(axi_master_ar_size),
+		.axi_master_ar_burst(axi_master_ar_burst),
+		.axi_master_ar_lock(axi_master_ar_lock),
+		.axi_master_ar_cache(axi_master_ar_cache),
+		.axi_master_ar_qos(axi_master_ar_qos),
+		.axi_master_ar_id(axi_master_ar_id),
+		.axi_master_ar_user(axi_master_ar_user),
+		.axi_master_ar_ready(axi_master_ar_ready),
+		.axi_master_w_valid(axi_master_w_valid),
+		.axi_master_w_data(axi_master_w_data),
+		.axi_master_w_strb(axi_master_w_strb),
+		.axi_master_w_user(axi_master_w_user),
+		.axi_master_w_last(axi_master_w_last),
+		.axi_master_w_ready(axi_master_w_ready),
+		.axi_master_r_valid(axi_master_r_valid),
+		.axi_master_r_data(axi_master_r_data),
+		.axi_master_r_resp(axi_master_r_resp),
+		.axi_master_r_last(axi_master_r_last),
+		.axi_master_r_id(axi_master_r_id),
+		.axi_master_r_user(axi_master_r_user),
+		.axi_master_r_ready(axi_master_r_ready),
+		.axi_master_b_valid(axi_master_b_valid),
+		.axi_master_b_resp(axi_master_b_resp),
+		.axi_master_b_id(axi_master_b_id),
+		.axi_master_b_user(axi_master_b_user),
+		.axi_master_b_ready(axi_master_b_ready)
+	);
+	assign select_inhibit = |module_inhibit;
+	always @(*)
+		if (module_id_reg == 0)
+			tdo_o = tdo_axi;
+		else if (module_id_reg == 1)
+			tdo_o = tdo_cpu;
+		else
+			tdo_o = 1'b0;
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_crc32.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_crc32.v
new file mode 100644
index 0000000..6e04790
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_crc32.v
@@ -0,0 +1,121 @@
+//////////////////////////////////////////////////////////////////////
+// File:  CRC32.v                             
+// Date:  Thu Nov 27 13:56:49 2003                                                      
+//                                                                     
+// Copyright (C) 1999-2003 Easics NV.                 
+// This source file may be used and distributed without restriction    
+// provided that this copyright statement is not removed from the file 
+// and that any derivative work contains the original copyright notice
+// and the associated disclaimer.
+//
+// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
+// OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+// WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Purpose: Verilog module containing a synthesizable CRC function
+//   * polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
+//   * data width: 1
+//                                                                     
+// Info: janz@easics.be (Jan Zegers)                           
+//       http://www.easics.com
+//
+// Modified by Nathan Yawn for the Advanced Debug Module
+// Changes (C) 2008 - 2010 Nathan Yawn                                 
+///////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: adbg_crc32.v,v $
+// Revision 1.3  2011-10-24 02:25:11  natey
+// Removed extraneous '#1' delays, which were a holdover from the original
+// versions in the previous dbg_if core.
+//
+// Revision 1.2  2010-01-10 22:54:10  Nathan
+// Update copyright dates
+//
+// Revision 1.1  2008/07/22 20:28:29  Nathan
+// Changed names of all files and modules (prefixed an a, for advanced).  Cleanup, indenting.  No functional changes.
+//
+// Revision 1.3  2008/07/06 20:02:53  Nathan
+// Fixes for synthesis with Xilinx ISE (also synthesizable with 
+// Quartus II 7.0).  Ran through dos2unix.
+//
+// Revision 1.2  2008/06/20 19:22:10  Nathan
+// Reversed the direction of the CRC computation shift, for a more 
+// hardware-efficient implementation.
+//
+//
+//
+//
+
+
+module adbg_crc32 (clk, data, enable, shift, clr, rstn, crc_out, serial_out);
+
+input         clk;
+input         data;
+input         enable;
+input         shift;
+input         clr;
+input         rstn;
+output [31:0] crc_out;
+output        serial_out;
+
+
+reg    [31:0] crc;
+wire   [31:0] new_crc;
+
+
+// You may notice that the 'poly' in this implementation is backwards.
+// This is because the shift is also 'backwards', so that the data can
+// be shifted out in the same direction, which saves on logic + routing.
+assign new_crc[0] = crc[1];
+assign new_crc[1] = crc[2];
+assign new_crc[2] = crc[3];
+assign new_crc[3] = crc[4];
+assign new_crc[4] = crc[5];
+assign new_crc[5] = crc[6] ^ data ^ crc[0];
+assign new_crc[6] = crc[7];
+assign new_crc[7] = crc[8];
+assign new_crc[8] = crc[9] ^ data ^ crc[0];
+assign new_crc[9] = crc[10] ^ data ^ crc[0];
+assign new_crc[10] = crc[11];
+assign new_crc[11] = crc[12];
+assign new_crc[12] = crc[13];
+assign new_crc[13] = crc[14];
+assign new_crc[14] = crc[15];
+assign new_crc[15] = crc[16] ^ data ^ crc[0];
+assign new_crc[16] = crc[17];
+assign new_crc[17] = crc[18];
+assign new_crc[18] = crc[19];
+assign new_crc[19] = crc[20] ^ data ^ crc[0];
+assign new_crc[20] = crc[21] ^ data ^ crc[0];
+assign new_crc[21] = crc[22] ^ data ^ crc[0];
+assign new_crc[22] = crc[23];
+assign new_crc[23] = crc[24] ^ data ^ crc[0];
+assign new_crc[24] = crc[25] ^ data ^ crc[0];
+assign new_crc[25] = crc[26];
+assign new_crc[26] = crc[27] ^ data ^ crc[0];
+assign new_crc[27] = crc[28] ^ data ^ crc[0];
+assign new_crc[28] = crc[29];
+assign new_crc[29] = crc[30] ^ data ^ crc[0];
+assign new_crc[30] = crc[31] ^ data ^ crc[0];
+assign new_crc[31] =           data ^ crc[0];
+
+always @ (posedge clk or negedge rstn)
+begin
+  if(~rstn)
+    crc[31:0] <= 32'hffffffff;
+  else if(clr)
+    crc[31:0] <= 32'hffffffff;
+  else if(enable)
+    crc[31:0] <= new_crc;
+  else if (shift)
+    crc[31:0] <= {1'b0, crc[31:1]};
+end
+
+
+//assign crc_match = (crc == 32'h0);
+assign crc_out = crc; //[31];
+assign serial_out = crc[0];
+
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_defines.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_defines.v
new file mode 100644
index 0000000..0644ea0
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_defines.v
@@ -0,0 +1,75 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  adbg_defines.v                                              ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the Advanced Debug Interface.          ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2008 - 2010 Authors                            ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+
+
+// Length of the MODULE ID register
+`define	DBG_TOP_MODULE_ID_LENGTH	2
+
+// How many modules can be supported by the module id length
+`define     DBG_TOP_MAX_MODULES           4
+
+// Chains
+`define DBG_TOP_WISHBONE_DEBUG_MODULE  2'h0
+`define DBG_TOP_CPU0_DEBUG_MODULE      2'h1
+`define DBG_TOP_CPU1_DEBUG_MODULE      2'h2
+`define DBG_TOP_JSP_DEBUG_MODULE       2'h3
+
+// Length of data
+`define DBG_TOP_MODULE_DATA_LEN  64
+
+
+// If WISHBONE sub-module is supported uncomment the following line
+`define DBG_WISHBONE_SUPPORTED
+
+// If CPU_0 sub-module is supported uncomment the following line
+`define DBG_CPU0_SUPPORTED
+
+// If CPU_1 sub-module is supported uncomment the following line
+//`define DBG_CPU1_SUPPORTED
+
+// To include the JTAG Serial Port (JSP), uncomment the following line
+`define DBG_JSP_SUPPORTED  
+
+// Define this if you intend to use the JSP in a system with multiple
+// devices on the JTAG chain
+`define ADBG_JSP_SUPPORT_MULTI
+
+// If this is defined, status bits will be skipped on burst
+// reads and writes to improve download speeds.
+`define ADBG_USE_HISPEED
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_biu.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_biu.v
new file mode 100644
index 0000000..b778f70
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_biu.v
@@ -0,0 +1,324 @@
+module adbg_lint_biu 
+#(
+    parameter ADDR_WIDTH = 32,
+    parameter DATA_WIDTH = 64,
+    parameter AUX_WIDTH = 6
+)
+(
+	tck_i,
+	trstn_i,
+	data_i,
+	data_o,
+	addr_i,
+	strobe_i,
+	rd_wrn_i,
+	rdy_o,
+	err_o,
+	word_size_i,
+	clk_i,
+	rstn_i,
+	lint_req_o,
+	lint_add_o,
+	lint_wen_o,
+	lint_wdata_o,
+	lint_be_o,
+	lint_aux_o,
+	lint_gnt_i,
+	lint_r_aux_i,
+	lint_r_valid_i,
+	lint_r_rdata_i,
+	lint_r_opc_i
+);
+	//parameter ADDR_WIDTH = 32;
+	//parameter DATA_WIDTH = 64;
+	//parameter AUX_WIDTH = 6;
+	input wire tck_i;
+	input wire trstn_i;
+	input wire [63:0] data_i;
+	output reg [63:0] data_o;
+	input wire [31:0] addr_i;
+	input wire strobe_i;
+	input wire rd_wrn_i;
+	output reg rdy_o;
+	output wire err_o;
+	input wire [3:0] word_size_i;
+	input wire clk_i;
+	input wire rstn_i;
+	output reg lint_req_o;
+	output wire [ADDR_WIDTH - 1:0] lint_add_o;
+	output reg lint_wen_o;
+	output wire [DATA_WIDTH - 1:0] lint_wdata_o;
+	output wire [(DATA_WIDTH / 8) - 1:0] lint_be_o;
+	output wire [AUX_WIDTH - 1:0] lint_aux_o;
+	input wire lint_gnt_i;
+	input wire lint_r_aux_i;
+	input wire lint_r_valid_i;
+	input wire [DATA_WIDTH - 1:0] lint_r_rdata_i;
+	input wire lint_r_opc_i;
+	reg [(DATA_WIDTH / 8) - 1:0] sel_reg;
+	reg [ADDR_WIDTH - 1:0] addr_reg;
+	reg [DATA_WIDTH - 1:0] data_in_reg;
+	reg [DATA_WIDTH - 1:0] data_out_reg;
+	reg wr_reg;
+	reg str_sync;
+	reg rdy_sync;
+	reg err_reg;
+	reg rdy_sync_tff1;
+	reg rdy_sync_tff2;
+	reg rdy_sync_tff2q;
+	reg str_sync_wbff1;
+	reg str_sync_wbff2;
+	reg str_sync_wbff2q;
+	reg data_o_en;
+	reg rdy_sync_en;
+	reg err_en;
+	reg [(DATA_WIDTH / 8) - 1:0] be_dec;
+	wire start_toggle;
+	reg [DATA_WIDTH - 1:0] swapped_data_i;
+	reg [DATA_WIDTH - 1:0] swapped_data_out;
+	reg [1:0] lint_fsm_state;
+	reg [1:0] next_fsm_state;
+	generate
+		if (DATA_WIDTH == 64) begin : genblk1
+			always @(*)
+				case (word_size_i)
+					4'h1:
+						if (addr_i[2:0] == 3'b000)
+							be_dec = 8'b00000001;
+						else if (addr_i[2:0] == 3'b001)
+							be_dec = 8'b00000010;
+						else if (addr_i[2:0] == 3'b010)
+							be_dec = 8'b00000100;
+						else if (addr_i[2:0] == 3'b011)
+							be_dec = 8'b00001000;
+						else if (addr_i[2:0] == 3'b100)
+							be_dec = 8'b00010000;
+						else if (addr_i[2:0] == 3'b101)
+							be_dec = 8'b00100000;
+						else if (addr_i[2:0] == 3'b110)
+							be_dec = 8'b01000000;
+						else
+							be_dec = 8'b10000000;
+					4'h2:
+						if (addr_i[2:1] == 2'b00)
+							be_dec = 8'b00000011;
+						else if (addr_i[2:1] == 2'b01)
+							be_dec = 8'b00001100;
+						else if (addr_i[2:1] == 2'b10)
+							be_dec = 8'b00110000;
+						else
+							be_dec = 8'b11000000;
+					4'h4:
+						if (addr_i[2] == 1'b0)
+							be_dec = 8'b00001111;
+						else
+							be_dec = 8'b11110000;
+					4'h8: be_dec = 8'b11111111;
+					default: be_dec = 8'b11111111;
+				endcase
+		end
+		else if (DATA_WIDTH == 32) begin : genblk1
+			always @(*)
+				case (word_size_i)
+					4'h1:
+						if (addr_i[1:0] == 2'b00)
+							be_dec = 4'b0001;
+						else if (addr_i[1:0] == 2'b01)
+							be_dec = 4'b0010;
+						else if (addr_i[1:0] == 2'b10)
+							be_dec = 4'b0100;
+						else
+							be_dec = 4'b1000;
+					4'h2:
+						if (addr_i[1] == 1'b0)
+							be_dec = 4'b0011;
+						else
+							be_dec = 4'b1100;
+					4'h4: be_dec = 4'b1111;
+					4'h8: be_dec = 4'b1111;
+					default: be_dec = 4'b1111;
+				endcase
+		end
+		if (DATA_WIDTH == 64) begin : genblk2
+			always @(*)
+				case (be_dec)
+					8'b00001111: swapped_data_i = {32'h00000000, data_i[63:32]};
+					8'b11110000: swapped_data_i = {data_i[63:32], 32'h00000000};
+					8'b00000011: swapped_data_i = {48'h000000000000, data_i[63:48]};
+					8'b00001100: swapped_data_i = {32'h00000000, data_i[63:48], 16'h0000};
+					8'b00110000: swapped_data_i = {16'h0000, data_i[63:48], 32'h00000000};
+					8'b11000000: swapped_data_i = {data_i[63:48], 48'h000000000000};
+					8'b00000001: swapped_data_i = {56'h00000000000000, data_i[63:56]};
+					8'b00000010: swapped_data_i = {48'h000000000000, data_i[63:56], 8'h00};
+					8'b00000100: swapped_data_i = {40'h0000000000, data_i[63:56], 16'h0000};
+					8'b00001000: swapped_data_i = {32'h00000000, data_i[63:56], 24'h000000};
+					8'b00010000: swapped_data_i = {24'h000000, data_i[63:56], 32'h00000000};
+					8'b00100000: swapped_data_i = {16'h0000, data_i[63:56], 40'h0000000000};
+					8'b01000000: swapped_data_i = {8'h00, data_i[63:56], 48'h000000000000};
+					8'b10000000: swapped_data_i = {data_i[63:56], 56'h00000000000000};
+					default: swapped_data_i = data_i;
+				endcase
+		end
+		else if (DATA_WIDTH == 32) begin : genblk2
+			always @(*)
+				case (be_dec)
+					4'b1111: swapped_data_i = data_i[63:32];
+					4'b0011: swapped_data_i = {16'h0000, data_i[63:48]};
+					4'b1100: swapped_data_i = {data_i[63:48], 16'h0000};
+					4'b0001: swapped_data_i = {24'h000000, data_i[63:56]};
+					4'b0010: swapped_data_i = {16'h0000, data_i[63:56], 8'h00};
+					4'b0100: swapped_data_i = {8'h00, data_i[63:56], 16'h0000};
+					4'b1000: swapped_data_i = {data_i[63:56], 24'h000000};
+					default: swapped_data_i = data_i[63:32];
+				endcase
+		end
+		if (DATA_WIDTH == 64) begin : genblk3
+			always @(*)
+				case (sel_reg)
+					8'b00001111: swapped_data_out = lint_r_rdata_i;
+					8'b11110000: swapped_data_out = {32'h00000000, lint_r_rdata_i[63:32]};
+					8'b00000011: swapped_data_out = lint_r_rdata_i;
+					8'b00001100: swapped_data_out = {16'h0000, lint_r_rdata_i[63:16]};
+					8'b00110000: swapped_data_out = {32'h00000000, lint_r_rdata_i[63:32]};
+					8'b11000000: swapped_data_out = {48'h000000000000, lint_r_rdata_i[63:48]};
+					8'b00000001: swapped_data_out = lint_r_rdata_i;
+					8'b00000010: swapped_data_out = {8'h00, lint_r_rdata_i[63:8]};
+					8'b00000100: swapped_data_out = {16'h0000, lint_r_rdata_i[63:16]};
+					8'b00001000: swapped_data_out = {24'h000000, lint_r_rdata_i[63:24]};
+					8'b00010000: swapped_data_out = {32'h00000000, lint_r_rdata_i[63:32]};
+					8'b00100000: swapped_data_out = {40'h0000000000, lint_r_rdata_i[63:40]};
+					8'b01000000: swapped_data_out = {48'h000000000000, lint_r_rdata_i[63:48]};
+					8'b10000000: swapped_data_out = {56'h00000000000000, lint_r_rdata_i[63:56]};
+					default: swapped_data_out = lint_r_rdata_i;
+				endcase
+		end
+		else if (DATA_WIDTH == 32) begin : genblk3
+			always @(*)
+				case (sel_reg)
+					4'b1111: swapped_data_out = lint_r_rdata_i;
+					4'b0011: swapped_data_out = lint_r_rdata_i;
+					4'b1100: swapped_data_out = {16'h0000, lint_r_rdata_i[31:16]};
+					4'b0001: swapped_data_out = lint_r_rdata_i;
+					4'b0010: swapped_data_out = {8'h00, lint_r_rdata_i[31:8]};
+					4'b0100: swapped_data_out = {16'h0000, lint_r_rdata_i[31:16]};
+					4'b1000: swapped_data_out = {24'h000000, lint_r_rdata_i[31:24]};
+					default: swapped_data_out = lint_r_rdata_i;
+				endcase
+		end
+	endgenerate
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			sel_reg <= 'h0;
+			addr_reg <= 'h0;
+			data_in_reg <= 'h0;
+			wr_reg <= 1'b0;
+		end
+		else if (strobe_i && rdy_o) begin
+			sel_reg <= be_dec;
+			addr_reg <= addr_i;
+			if (!rd_wrn_i)
+				data_in_reg <= swapped_data_i;
+			wr_reg <= ~rd_wrn_i;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			str_sync <= 1'b0;
+		else if (strobe_i && rdy_o)
+			str_sync <= ~str_sync;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			rdy_sync_tff1 <= 1'b0;
+			rdy_sync_tff2 <= 1'b0;
+			rdy_sync_tff2q <= 1'b0;
+		end
+		else begin
+			rdy_sync_tff1 <= rdy_sync;
+			rdy_sync_tff2 <= rdy_sync_tff1;
+			rdy_sync_tff2q <= rdy_sync_tff2;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			rdy_o <= 1'b1;
+		else if (strobe_i && rdy_o)
+			rdy_o <= 1'b0;
+		else if (rdy_sync_tff2 != rdy_sync_tff2q)
+			rdy_o <= 1'b1;
+	assign lint_add_o = addr_reg;
+	assign lint_wdata_o = data_in_reg;
+	assign lint_be_o = sel_reg;
+	always @(*)
+		if (DATA_WIDTH == 64)
+			data_o = data_out_reg;
+		else if (DATA_WIDTH == 32)
+			data_o = {32'h00000000, data_out_reg};
+	assign err_o = err_reg;
+	assign lint_aux_o = 'h0;
+	always @(posedge clk_i or negedge rstn_i)
+		if (!rstn_i) begin
+			str_sync_wbff1 <= 1'b0;
+			str_sync_wbff2 <= 1'b0;
+			str_sync_wbff2q <= 1'b0;
+		end
+		else begin
+			str_sync_wbff1 <= str_sync;
+			str_sync_wbff2 <= str_sync_wbff1;
+			str_sync_wbff2q <= str_sync_wbff2;
+		end
+	assign start_toggle = str_sync_wbff2 != str_sync_wbff2q;
+	always @(posedge clk_i or negedge rstn_i)
+		if (!rstn_i)
+			err_reg <= 1'b0;
+		else if (err_en)
+			err_reg <= 1'b0;
+	always @(posedge clk_i or negedge rstn_i)
+		if (!rstn_i)
+			data_out_reg <= 32'h00000000;
+		else if (data_o_en)
+			data_out_reg <= swapped_data_out;
+	always @(posedge clk_i or negedge rstn_i)
+		if (!rstn_i)
+			rdy_sync <= 1'b0;
+		else if (rdy_sync_en)
+			rdy_sync <= ~rdy_sync;
+	always @(posedge clk_i or negedge rstn_i)
+		if (~rstn_i)
+			lint_fsm_state <= 2'd0;
+		else
+			lint_fsm_state <= next_fsm_state;
+	always @(*) begin
+		lint_wen_o = 1'b1;
+		lint_req_o = 1'b0;
+		next_fsm_state = lint_fsm_state;
+		rdy_sync_en = 1'b0;
+		data_o_en = 1'b0;
+		err_en = 1'b0;
+		case (lint_fsm_state)
+			2'd0:
+				if (start_toggle)
+					next_fsm_state = 2'd1;
+				else
+					next_fsm_state = 2'd0;
+			2'd1: begin
+				lint_req_o = 1'b1;
+				if (wr_reg)
+					lint_wen_o = 1'b0;
+				if (lint_gnt_i)
+					if (wr_reg) begin
+						next_fsm_state = 2'd0;
+						rdy_sync_en = 1'b1;
+						err_en = 1'b1;
+					end
+					else
+						next_fsm_state = 2'd2;
+			end
+			2'd2:
+				if (lint_r_valid_i) begin
+					next_fsm_state = 2'd0;
+					rdy_sync_en = 1'b1;
+					err_en = 1'b1;
+					if (!wr_reg)
+						data_o_en = 1'b1;
+				end
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_defines.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_defines.v
new file mode 100644
index 0000000..0eb9c4c
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_defines.v
@@ -0,0 +1,94 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  adbg_wb_defines.v                                           ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the SoC Advanced Debug Interface.      ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2008-2010        Authors                       ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: adbg_wb_defines.v,v $
+// Revision 1.4  2010-01-10 22:54:11  Nathan
+// Update copyright dates
+//
+// Revision 1.3  2009/05/17 20:54:57  Nathan
+// Changed email address to opencores.org
+//
+// Revision 1.2  2009/05/04 00:50:11  Nathan
+// Changed the AXI BIU to use big-endian byte ordering, to match the OR1000.  Kept little-endian ordering as a compile-time option in case this is ever used with a little-endian CPU.
+//
+// Revision 1.1  2008/07/22 20:28:32  Nathan
+// Changed names of all files and modules (prefixed an a, for advanced).  Cleanup, indenting.  No functional changes.
+//
+
+// Endian-ness of the Wishbone interface.
+// Default is BIG endian, to match the OR1200.
+// If using a LITTLE endian CPU, e.g. an x86, un-comment this line.
+//`define DBG_AXI_LITTLE_ENDIAN
+
+// These relate to the number of internal registers, and how
+// many bits are required in the Reg. Select register
+`define DBG_LINT_REGSELECT_SIZE 1
+`define DBG_LINT_NUM_INTREG 1
+
+// Register index definitions for module-internal registers
+// The LINT module has just 1, the error register
+`define DBG_LINT_INTREG_ERROR 1'b0
+
+// Valid commands/opcodes for the wishbone debug module
+// 0000  NOP
+// 0001  Write burst, 8-bit access
+// 0010  Write burst, 16-bit access
+// 0011  Write burst, 32-bit access
+// 0100  Write burst, 64-bit access
+// 0101  Read burst, 8-bit access
+// 0110  Read burst, 16-bit access
+// 0111  Read burst, 32-bit access
+// 1000  Read burst, 64-bit access
+// 1001  Internal register select/write
+// 1010 - 1100 Reserved
+// 1101  Internal register select
+// 1110 - 1111 Reserved
+
+`define DBG_LINT_CMD_BWRITE8  4'h1
+`define DBG_LINT_CMD_BWRITE16 4'h2
+`define DBG_LINT_CMD_BWRITE32 4'h3
+`define DBG_LINT_CMD_BWRITE64 4'h4
+`define DBG_LINT_CMD_BREAD8   4'h5
+`define DBG_LINT_CMD_BREAD16  4'h6
+`define DBG_LINT_CMD_BREAD32  4'h7
+`define DBG_LINT_CMD_BREAD64  4'h8
+`define DBG_LINT_CMD_IREG_WR  4'h9
+`define DBG_LINT_CMD_IREG_SEL 4'hd
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_module.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_module.v
new file mode 100644
index 0000000..d9b3cdc
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lint_module.v
@@ -0,0 +1,528 @@
+module adbg_lint_module 
+#(
+    parameter ADDR_WIDTH = 32,
+    parameter DATA_WIDTH = 64,
+    parameter AUX_WIDTH = 6
+)
+(
+	tck_i,
+	module_tdo_o,
+	tdi_i,
+	capture_dr_i,
+	shift_dr_i,
+	update_dr_i,
+	data_register_i,
+	module_select_i,
+	top_inhibit_o,
+	trstn_i,
+	clk_i,
+	rstn_i,
+	lint_req_o,
+	lint_add_o,
+	lint_wen_o,
+	lint_wdata_o,
+	lint_be_o,
+	lint_aux_o,
+	lint_gnt_i,
+	lint_r_aux_i,
+	lint_r_valid_i,
+	lint_r_rdata_i,
+	lint_r_opc_i
+);
+	//parameter ADDR_WIDTH = 32;
+	//parameter DATA_WIDTH = 64;
+	//parameter AUX_WIDTH = 6;
+	input wire tck_i;
+	output reg module_tdo_o;
+	input wire tdi_i;
+	input wire capture_dr_i;
+	input wire shift_dr_i;
+	input wire update_dr_i;
+	input wire [63:0] data_register_i;
+	input wire module_select_i;
+	output reg top_inhibit_o;
+	input wire trstn_i;
+	input wire clk_i;
+	input wire rstn_i;
+	output wire lint_req_o;
+	output wire [ADDR_WIDTH - 1:0] lint_add_o;
+	output wire lint_wen_o;
+	output wire [DATA_WIDTH - 1:0] lint_wdata_o;
+	output wire [(DATA_WIDTH / 8) - 1:0] lint_be_o;
+	output wire [AUX_WIDTH - 1:0] lint_aux_o;
+	input wire lint_gnt_i;
+	input wire lint_r_aux_i;
+	input wire lint_r_valid_i;
+	input wire [DATA_WIDTH - 1:0] lint_r_rdata_i;
+	input wire lint_r_opc_i;
+	reg [31:0] address_counter;
+	reg [5:0] bit_count;
+	reg [15:0] word_count;
+	reg [3:0] operation;
+	reg [64:0] data_out_shift_reg;
+	reg [0:0] internal_register_select;
+	reg [32:0] internal_reg_error;
+	reg addr_sel;
+	reg addr_ct_en;
+	reg op_reg_en;
+	reg bit_ct_en;
+	reg bit_ct_rst;
+	reg word_ct_sel;
+	reg word_ct_en;
+	reg out_reg_ld_en;
+	reg out_reg_shift_en;
+	reg out_reg_data_sel;
+	reg [1:0] tdo_output_sel;
+	reg biu_strobe;
+	reg crc_clr;
+	reg crc_en;
+	reg crc_in_sel;
+	reg crc_shift_en;
+	reg regsel_ld_en;
+	reg intreg_ld_en;
+	reg error_reg_en;
+	reg biu_clr_err;
+	wire word_count_zero;
+	wire bit_count_max;
+	wire module_cmd;
+	wire biu_ready;
+	wire biu_err;
+	wire burst_read;
+	wire burst_write;
+	wire intreg_instruction;
+	wire intreg_write;
+	reg rd_op;
+	wire crc_match;
+	wire bit_count_32;
+	reg [5:0] word_size_bits;
+	reg [3:0] word_size_bytes;
+	wire [32:0] incremented_address;
+	wire [31:0] data_to_addr_counter;
+	wire [15:0] data_to_word_counter;
+	wire [15:0] decremented_word_count;
+	wire [31:0] address_data_in;
+	wire [15:0] count_data_in;
+	wire [3:0] operation_in;
+	wire [63:0] data_to_biu;
+	wire [63:0] data_from_biu;
+	wire [31:0] crc_data_out;
+	wire crc_data_in;
+	wire crc_serial_out;
+	wire [0:0] reg_select_data;
+	wire [64:0] out_reg_data;
+	reg [64:0] data_from_internal_reg;
+	wire biu_rst;
+	reg [3:0] module_state;
+	reg [3:0] module_next_state;
+	assign module_cmd = ~data_register_i[63];
+	assign operation_in = data_register_i[62:59];
+	assign address_data_in = data_register_i[58:27];
+	assign count_data_in = data_register_i[26:11];
+	assign data_to_biu = {tdi_i, data_register_i[63:1]};
+	assign reg_select_data = data_register_i[58:57];
+	assign intreg_instruction = (operation_in == 4'h9) | (operation_in == 4'hd);
+	assign intreg_write = operation_in == 4'h9;
+	assign burst_write = (((operation_in == 4'h1) | (operation_in == 4'h2)) | (operation_in == 4'h3)) | (operation_in == 4'h4);
+	assign burst_read = (((operation_in == 4'h5) | (operation_in == 4'h6)) | (operation_in == 4'h7)) | (operation_in == 4'h8);
+	always @(operation)
+		case (operation)
+			4'h1: begin
+				word_size_bits <= 6'd7;
+				word_size_bytes <= 4'd1;
+				rd_op <= 1'b0;
+			end
+			4'h2: begin
+				word_size_bits <= 6'd15;
+				word_size_bytes <= 4'd2;
+				rd_op <= 1'b0;
+			end
+			4'h3: begin
+				word_size_bits <= 6'd31;
+				word_size_bytes <= 4'd4;
+				rd_op <= 1'b0;
+			end
+			4'h4: begin
+				word_size_bits <= 6'd63;
+				word_size_bytes <= 4'd8;
+				rd_op <= 1'b0;
+			end
+			4'h5: begin
+				word_size_bits <= 6'd7;
+				word_size_bytes <= 4'd1;
+				rd_op <= 1'b1;
+			end
+			4'h6: begin
+				word_size_bits <= 6'd15;
+				word_size_bytes <= 4'd2;
+				rd_op <= 1'b1;
+			end
+			4'h7: begin
+				word_size_bits <= 6'd31;
+				word_size_bytes <= 4'd4;
+				rd_op <= 1'b1;
+			end
+			4'h8: begin
+				word_size_bits <= 6'd63;
+				word_size_bytes <= 4'd4;
+				rd_op <= 1'b1;
+			end
+			default: begin
+				word_size_bits <= 6'hxx;
+				word_size_bytes <= 4'hx;
+				rd_op <= 1'bx;
+			end
+		endcase
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			internal_register_select = 1'h0;
+		else if (regsel_ld_en)
+			internal_register_select = reg_select_data;
+	always @(internal_register_select or internal_reg_error)
+		case (internal_register_select)
+			1'b0: data_from_internal_reg = internal_reg_error;
+			default: data_from_internal_reg = internal_reg_error;
+		endcase
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			internal_reg_error = 33'h000000000;
+		else if (intreg_ld_en && (reg_select_data == 1'b0)) begin
+			if (data_register_i[46])
+				internal_reg_error[0] = 1'b0;
+		end
+		else if (error_reg_en && !internal_reg_error[0]) begin
+			if (biu_err || !biu_ready)
+				internal_reg_error[0] = 1'b1;
+			else if (biu_strobe)
+				internal_reg_error[32:1] = address_counter;
+		end
+		else if (biu_strobe && !internal_reg_error[0])
+			internal_reg_error[32:1] = address_counter;
+	assign data_to_addr_counter = (addr_sel ? incremented_address[31:0] : address_data_in);
+	assign incremented_address = address_counter + word_size_bytes;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			address_counter <= 32'h00000000;
+		else if (addr_ct_en)
+			address_counter <= data_to_addr_counter;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			operation <= 4'h0;
+		else if (op_reg_en)
+			operation <= operation_in;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			bit_count <= 6'h00;
+		else if (bit_ct_rst)
+			bit_count <= 6'h00;
+		else if (bit_ct_en)
+			bit_count <= bit_count + 6'h01;
+	assign bit_count_max = (bit_count == word_size_bits ? 1'b1 : 1'b0);
+	assign bit_count_32 = (bit_count == 6'h20 ? 1'b1 : 1'b0);
+	assign data_to_word_counter = (word_ct_sel ? decremented_word_count : count_data_in);
+	assign decremented_word_count = word_count - 16'h0001;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			word_count <= 16'h0000;
+		else if (word_ct_en)
+			word_count <= data_to_word_counter;
+	assign word_count_zero = word_count == 16'h0000;
+	assign out_reg_data = (out_reg_data_sel ? data_from_internal_reg : {1'b0, data_from_biu});
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			data_out_shift_reg <= 'h0;
+		else if (out_reg_ld_en)
+			data_out_shift_reg <= out_reg_data;
+		else if (out_reg_shift_en)
+			data_out_shift_reg <= {1'b0, data_out_shift_reg[64:1]};
+	always @(tdo_output_sel or data_out_shift_reg[0] or biu_ready or crc_match or crc_serial_out)
+		if (tdo_output_sel == 2'h0)
+			module_tdo_o <= biu_ready;
+		else if (tdo_output_sel == 2'h1)
+			module_tdo_o <= data_out_shift_reg[0];
+		else if (tdo_output_sel == 2'h2)
+			module_tdo_o <= crc_match;
+		else
+			module_tdo_o <= crc_serial_out;
+	adbg_lint_biu #(
+		.ADDR_WIDTH(ADDR_WIDTH),
+		.DATA_WIDTH(DATA_WIDTH),
+		.AUX_WIDTH(AUX_WIDTH)
+	) lint_biu_i(
+		.tck_i(tck_i),
+		.trstn_i(trstn_i),
+		.data_i(data_to_biu),
+		.data_o(data_from_biu),
+		.addr_i(address_counter),
+		.strobe_i(biu_strobe),
+		.rd_wrn_i(rd_op),
+		.rdy_o(biu_ready),
+		.err_o(biu_err),
+		.word_size_i(word_size_bytes),
+		.clk_i(clk_i),
+		.rstn_i(rstn_i),
+		.lint_req_o(lint_req_o),
+		.lint_add_o(lint_add_o),
+		.lint_wen_o(lint_wen_o),
+		.lint_wdata_o(lint_wdata_o),
+		.lint_be_o(lint_be_o),
+		.lint_aux_o(lint_aux_o),
+		.lint_gnt_i(lint_gnt_i),
+		.lint_r_aux_i(lint_r_aux_i),
+		.lint_r_valid_i(lint_r_valid_i),
+		.lint_r_rdata_i(lint_r_rdata_i),
+		.lint_r_opc_i(lint_r_opc_i)
+	);
+	assign crc_data_in = (crc_in_sel ? tdi_i : data_out_shift_reg[0]);
+	adbg_crc32 lint_crc_i(
+		.clk(tck_i),
+		.data(crc_data_in),
+		.enable(crc_en),
+		.shift(crc_shift_en),
+		.clr(crc_clr),
+		.rstn(trstn_i),
+		.crc_out(crc_data_out),
+		.serial_out(crc_serial_out)
+	);
+	assign crc_match = (data_register_i[63:32] == crc_data_out ? 1'b1 : 1'b0);
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_state <= 4'd0;
+		else
+			module_state <= module_next_state;
+	always @(module_state or module_select_i or module_cmd or update_dr_i or capture_dr_i or operation_in[2] or word_count_zero or bit_count_max or data_register_i[63] or bit_count_32 or biu_ready or burst_read or burst_write)
+		case (module_state)
+			4'd0:
+				if (((module_cmd && module_select_i) && update_dr_i) && burst_read)
+					module_next_state <= 4'd1;
+				else if (((module_cmd && module_select_i) && update_dr_i) && burst_write)
+					module_next_state <= 4'd5;
+				else
+					module_next_state <= 4'd0;
+			4'd1:
+				if (word_count_zero)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd2;
+			4'd2:
+				if (module_select_i && capture_dr_i)
+					module_next_state <= 4'd3;
+				else
+					module_next_state <= 4'd2;
+			4'd3:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (biu_ready)
+					module_next_state <= 4'd4;
+				else
+					module_next_state <= 4'd3;
+			4'd4:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_max && word_count_zero)
+					module_next_state <= 4'd9;
+				else
+					module_next_state <= 4'd4;
+			4'd9:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd9;
+			4'd5:
+				if (word_count_zero)
+					module_next_state <= 4'd0;
+				else if (module_select_i && capture_dr_i)
+					module_next_state <= 4'd6;
+				else
+					module_next_state <= 4'd5;
+			4'd6:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (module_select_i && data_register_i[63])
+					module_next_state <= 4'd7;
+				else
+					module_next_state <= 4'd6;
+			4'd7:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_max) begin
+					if (word_count_zero)
+						module_next_state <= 4'd10;
+					else
+						module_next_state <= 4'd7;
+				end
+				else
+					module_next_state <= 4'd7;
+			4'd8:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (word_count_zero)
+					module_next_state <= 4'd10;
+				else
+					module_next_state <= 4'd7;
+			4'd10:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_32)
+					module_next_state <= 4'd11;
+				else
+					module_next_state <= 4'd10;
+			4'd11:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd11;
+			default: module_next_state <= 4'd0;
+		endcase
+	always @(module_state or module_next_state or module_select_i or update_dr_i or capture_dr_i or shift_dr_i or operation_in[2] or word_count_zero or bit_count_max or data_register_i[52] or biu_ready or intreg_instruction or module_cmd or intreg_write or decremented_word_count) begin
+		addr_sel <= 1'b1;
+		addr_ct_en <= 1'b0;
+		op_reg_en <= 1'b0;
+		bit_ct_en <= 1'b0;
+		bit_ct_rst <= 1'b0;
+		word_ct_sel <= 1'b1;
+		word_ct_en <= 1'b0;
+		out_reg_ld_en <= 1'b0;
+		out_reg_shift_en <= 1'b0;
+		tdo_output_sel <= 2'b01;
+		biu_strobe <= 1'b0;
+		crc_clr <= 1'b0;
+		crc_en <= 1'b0;
+		crc_in_sel <= 1'b0;
+		crc_shift_en <= 1'b0;
+		out_reg_data_sel <= 1'b1;
+		regsel_ld_en <= 1'b0;
+		intreg_ld_en <= 1'b0;
+		error_reg_en <= 1'b0;
+		biu_clr_err <= 1'b0;
+		top_inhibit_o <= 1'b0;
+		case (module_state)
+			4'd0: begin
+				addr_sel <= 1'b0;
+				word_ct_sel <= 1'b0;
+				if (module_select_i & shift_dr_i)
+					out_reg_shift_en <= 1'b1;
+				if (module_select_i & capture_dr_i) begin
+					out_reg_data_sel <= 1'b1;
+					out_reg_ld_en <= 1'b1;
+				end
+				if ((module_select_i & module_cmd) & update_dr_i) begin
+					if (intreg_instruction)
+						regsel_ld_en <= 1'b1;
+					if (intreg_write)
+						intreg_ld_en <= 1'b1;
+				end
+				if (module_next_state != 4'd0) begin
+					addr_ct_en <= 1'b1;
+					op_reg_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_en <= 1'b1;
+					crc_clr <= 1'b1;
+				end
+			end
+			4'd1:
+				if (!word_count_zero) begin
+					biu_strobe <= 1'b1;
+					addr_sel <= 1'b1;
+					addr_ct_en <= 1'b1;
+				end
+			4'd2:
+				;
+			4'd3: begin
+				tdo_output_sel <= 2'h0;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd4) begin
+					error_reg_en <= 1'b1;
+					out_reg_data_sel <= 1'b0;
+					out_reg_ld_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe <= 1'b1;
+						addr_sel <= 1'b1;
+						addr_ct_en <= 1'b1;
+					end
+				end
+			end
+			4'd4: begin
+				tdo_output_sel <= 2'h1;
+				out_reg_shift_en <= 1'b1;
+				bit_ct_en <= 1'b1;
+				crc_en <= 1'b1;
+				crc_in_sel <= 1'b0;
+				top_inhibit_o <= 1'b1;
+				if (bit_count_max) begin
+					error_reg_en <= 1'b1;
+					out_reg_data_sel <= 1'b0;
+					out_reg_ld_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe <= 1'b1;
+						addr_sel <= 1'b1;
+						addr_ct_en <= 1'b1;
+					end
+				end
+			end
+			4'd9: begin
+				tdo_output_sel <= 2'h3;
+				crc_shift_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+			end
+			4'd5:
+				;
+			4'd6: begin
+				tdo_output_sel <= 2'h1;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd7) begin
+					biu_clr_err <= 1'b1;
+					bit_ct_en <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					crc_en <= 1'b1;
+					crc_in_sel <= 1'b1;
+				end
+			end
+			4'd7: begin
+				bit_ct_en <= 1'b1;
+				tdo_output_sel <= 2'h1;
+				crc_en <= 1'b1;
+				crc_in_sel <= 1'b1;
+				top_inhibit_o <= 1'b1;
+				if (bit_count_max) begin
+					error_reg_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					biu_strobe <= 1'b1;
+					addr_ct_en <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+				end
+			end
+			4'd8: begin
+				tdo_output_sel <= 2'h0;
+				error_reg_en <= 1'b1;
+				biu_strobe <= 1'b1;
+				word_ct_sel <= 1'b1;
+				word_ct_en <= 1'b1;
+				bit_ct_rst <= 1'b1;
+				addr_ct_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+			end
+			4'd10: begin
+				bit_ct_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd11)
+					tdo_output_sel <= 2'h2;
+			end
+			4'd11: begin
+				tdo_output_sel <= 2'h2;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd0)
+					error_reg_en <= 1'b1;
+			end
+			default:
+				;
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lintonly_top.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lintonly_top.v
new file mode 100644
index 0000000..13fb29c
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_lintonly_top.v
@@ -0,0 +1,120 @@
+module adbg_lintonly_top 
+#(
+    parameter ADDR_WIDTH = 32,
+    parameter DATA_WIDTH = 64,
+    parameter AUX_WIDTH = 6
+)
+(
+	tck_i,
+	tdi_i,
+	tdo_o,
+	trstn_i,
+	shift_dr_i,
+	pause_dr_i,
+	update_dr_i,
+	capture_dr_i,
+	debug_select_i,
+	clk_i,
+	rstn_i,
+	lint_req_o,
+	lint_add_o,
+	lint_wen_o,
+	lint_wdata_o,
+	lint_be_o,
+	lint_aux_o,
+	lint_gnt_i,
+	lint_r_aux_i,
+	lint_r_valid_i,
+	lint_r_rdata_i,
+	lint_r_opc_i
+);
+	//parameter ADDR_WIDTH = 32;
+	//parameter DATA_WIDTH = 64;
+	//parameter AUX_WIDTH = 6;
+	input wire tck_i;
+	input wire tdi_i;
+	output reg tdo_o;
+	input wire trstn_i;
+	input wire shift_dr_i;
+	input wire pause_dr_i;
+	input wire update_dr_i;
+	input wire capture_dr_i;
+	input wire debug_select_i;
+	input wire clk_i;
+	input wire rstn_i;
+	output wire lint_req_o;
+	output wire [ADDR_WIDTH - 1:0] lint_add_o;
+	output wire lint_wen_o;
+	output wire [DATA_WIDTH - 1:0] lint_wdata_o;
+	output wire [(DATA_WIDTH / 8) - 1:0] lint_be_o;
+	output wire [AUX_WIDTH - 1:0] lint_aux_o;
+	input wire lint_gnt_i;
+	input wire lint_r_aux_i;
+	input wire lint_r_valid_i;
+	input wire [DATA_WIDTH - 1:0] lint_r_rdata_i;
+	input wire lint_r_opc_i;
+	wire tdo_axi;
+	wire tdo_cpu;
+	reg [63:0] input_shift_reg;
+	reg [4:0] module_id_reg;
+	wire select_cmd;
+	wire [4:0] module_id_in;
+	reg [1:0] module_selects;
+	wire select_inhibit;
+	wire [1:0] module_inhibit;
+	integer j;
+	assign select_cmd = input_shift_reg[63];
+	assign module_id_in = input_shift_reg[62:58];
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_id_reg <= 5'h00;
+		else if (((debug_select_i && select_cmd) && update_dr_i) && !select_inhibit)
+			module_id_reg <= module_id_in;
+	always @(*)
+		if (module_id_reg == 0)
+			module_selects = 2'b01;
+		else
+			module_selects = 2'b10;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			input_shift_reg <= 'h0;
+		else if (debug_select_i && shift_dr_i)
+			input_shift_reg <= {tdi_i, input_shift_reg[63:1]};
+	adbg_lint_module #(
+		.ADDR_WIDTH(ADDR_WIDTH),
+		.DATA_WIDTH(DATA_WIDTH),
+		.AUX_WIDTH(AUX_WIDTH)
+	) i_dbg_lint(
+		.tck_i(tck_i),
+		.module_tdo_o(tdo_axi),
+		.tdi_i(tdi_i),
+		.capture_dr_i(capture_dr_i),
+		.shift_dr_i(shift_dr_i),
+		.update_dr_i(update_dr_i),
+		.data_register_i(input_shift_reg),
+		.module_select_i(module_selects[0]),
+		.top_inhibit_o(module_inhibit[0]),
+		.trstn_i(trstn_i),
+		.clk_i(clk_i),
+		.rstn_i(rstn_i),
+		.lint_req_o(lint_req_o),
+		.lint_add_o(lint_add_o),
+		.lint_wen_o(lint_wen_o),
+		.lint_wdata_o(lint_wdata_o),
+		.lint_be_o(lint_be_o),
+		.lint_aux_o(lint_aux_o),
+		.lint_gnt_i(lint_gnt_i),
+		.lint_r_aux_i(lint_r_aux_i),
+		.lint_r_valid_i(lint_r_valid_i),
+		.lint_r_rdata_i(lint_r_rdata_i),
+		.lint_r_opc_i(lint_r_opc_i)
+	);
+	assign select_inhibit = |module_inhibit;
+	always @(module_id_reg or tdo_axi or tdo_cpu)
+		if (module_id_reg == 0)
+			tdo_o <= tdo_axi;
+		else if (module_id_reg == 1)
+			tdo_o <= tdo_cpu;
+		else
+			tdo_o <= 1'b0;
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_biu.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_biu.v
new file mode 100644
index 0000000..3547656
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_biu.v
@@ -0,0 +1,188 @@
+module adbg_or1k_biu 
+#( 
+		parameter NB_CORES = 4
+    )
+(
+	tck_i,
+	trstn_i,
+	cpu_select_i,
+	data_i,
+	data_o,
+	addr_i,
+	strobe_i,
+	rd_wrn_i,
+	rdy_o,
+	cpu_clk_i,
+	cpu_rstn_i,
+	cpu_addr_o,
+	cpu_data_i,
+	cpu_data_o,
+	cpu_stb_o,
+	cpu_we_o,
+	cpu_ack_i
+);
+	//parameter NB_CORES = 4;
+	input wire tck_i;
+	input wire trstn_i;
+	input wire [3:0] cpu_select_i;
+	input wire [31:0] data_i;
+	output wire [31:0] data_o;
+	input wire [31:0] addr_i;
+	input wire strobe_i;
+	input wire rd_wrn_i;
+	output reg rdy_o;
+	input wire cpu_clk_i;
+	input wire cpu_rstn_i;
+	output reg [(NB_CORES * 16) - 1:0] cpu_addr_o;
+	input wire [(NB_CORES * 32) - 1:0] cpu_data_i;
+	output reg [(NB_CORES * 32) - 1:0] cpu_data_o;
+	output reg [NB_CORES - 1:0] cpu_stb_o;
+	output reg [NB_CORES - 1:0] cpu_we_o;
+	input wire [NB_CORES - 1:0] cpu_ack_i;
+	reg [31:0] cpu_data_int;
+	reg cpu_ack_int;
+	reg cpu_stb_int;
+	reg [31:0] addr_reg;
+	reg [31:0] data_in_reg;
+	reg [31:0] data_out_reg;
+	reg wr_reg;
+	reg str_sync;
+	reg rdy_sync;
+	reg rdy_sync_tff1;
+	reg rdy_sync_tff2;
+	reg rdy_sync_tff2q;
+	reg str_sync_wbff1;
+	reg str_sync_wbff2;
+	reg str_sync_wbff2q;
+	reg data_o_en;
+	reg rdy_sync_en;
+	wire start_toggle;
+	wire valid_selection;
+	assign valid_selection = (cpu_select_i < NB_CORES ? 1'b1 : 1'b0);
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			addr_reg <= 32'h00000000;
+			data_in_reg <= 32'h00000000;
+			wr_reg <= 1'b0;
+		end
+		else if (strobe_i && rdy_o) begin
+			addr_reg <= addr_i;
+			if (!rd_wrn_i)
+				data_in_reg <= data_i;
+			wr_reg <= ~rd_wrn_i;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			str_sync <= 1'b0;
+		else if (strobe_i && rdy_o)
+			str_sync <= ~str_sync;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			rdy_sync_tff1 <= 1'b0;
+			rdy_sync_tff2 <= 1'b0;
+			rdy_sync_tff2q <= 1'b0;
+			rdy_o <= 1'b1;
+		end
+		else begin
+			rdy_sync_tff1 <= rdy_sync;
+			rdy_sync_tff2 <= rdy_sync_tff1;
+			rdy_sync_tff2q <= rdy_sync_tff2;
+			if (strobe_i && rdy_o)
+				rdy_o <= 1'b0;
+			else if (rdy_sync_tff2 != rdy_sync_tff2q)
+				rdy_o <= 1'b1;
+		end
+	assign data_o = data_out_reg;
+	always @(*) begin : sv2v_autoblock_1
+		reg signed [31:0] i;
+		for (i = 0; i < NB_CORES; i = i + 1)
+			if (cpu_select_i == i) begin
+				cpu_data_o[i * 32+:32] = data_in_reg;
+				cpu_we_o[i] = wr_reg;
+				cpu_addr_o[i * 16+:16] = addr_reg;
+				cpu_stb_o[i] = cpu_stb_int;
+			end
+			else begin
+				cpu_data_o[i * 32+:32] = 'h0;
+				cpu_we_o[i] = 1'b0;
+				cpu_addr_o[i * 16+:16] = 'h0;
+				cpu_stb_o[i] = 1'b0;
+			end
+	end
+	always @(*) begin
+		cpu_data_int = 'h0;
+		cpu_ack_int = 1'b0;
+		begin : sv2v_autoblock_2
+			reg signed [31:0] i;
+			for (i = 0; i < NB_CORES; i = i + 1)
+				if (cpu_select_i == i) begin
+					cpu_data_int = cpu_data_i[i * 32+:32];
+					cpu_ack_int = cpu_ack_i[i];
+				end
+		end
+	end
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i) begin
+			str_sync_wbff1 <= 1'b0;
+			str_sync_wbff2 <= 1'b0;
+			str_sync_wbff2q <= 1'b0;
+		end
+		else begin
+			str_sync_wbff1 <= str_sync;
+			str_sync_wbff2 <= str_sync_wbff1;
+			str_sync_wbff2q <= str_sync_wbff2;
+		end
+	assign start_toggle = str_sync_wbff2 != str_sync_wbff2q;
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i)
+			data_out_reg <= 32'h00000000;
+		else if (data_o_en)
+			data_out_reg <= cpu_data_int;
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i)
+			rdy_sync <= 1'b0;
+		else if (rdy_sync_en)
+			rdy_sync <= ~rdy_sync;
+	reg cpu_fsm_state;
+	reg next_fsm_state;
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i)
+			cpu_fsm_state <= 1'h0;
+		else
+			cpu_fsm_state <= next_fsm_state;
+	always @(cpu_fsm_state or start_toggle or cpu_ack_int)
+		case (cpu_fsm_state)
+			1'h0:
+				if (start_toggle && !cpu_ack_int)
+					next_fsm_state <= 1'h1;
+				else
+					next_fsm_state <= 1'h0;
+			1'h1:
+				if (cpu_ack_int)
+					next_fsm_state <= 1'h0;
+				else
+					next_fsm_state <= 1'h1;
+		endcase
+	always @(cpu_fsm_state or start_toggle or cpu_ack_int or wr_reg) begin
+		rdy_sync_en = 1'b0;
+		data_o_en = 1'b0;
+		cpu_stb_int = 1'b0;
+		case (cpu_fsm_state)
+			1'h0:
+				if (start_toggle) begin
+					cpu_stb_int = 1'b1;
+					if (cpu_ack_int)
+						rdy_sync_en = 1'b1;
+					if (cpu_ack_int && !wr_reg)
+						data_o_en = 1'b1;
+				end
+			1'h1: begin
+				cpu_stb_int = 1'b1;
+				if (cpu_ack_int) begin
+					data_o_en = 1'b1;
+					rdy_sync_en = 1'b1;
+				end
+			end
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_defines.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_defines.v
new file mode 100644
index 0000000..d38fd08
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_defines.v
@@ -0,0 +1,83 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  adbg_or1k_defines.v                                         ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the SoC Advanced Debug Interface.      ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2008 - 2010       Authors                      ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: adbg_or1k_defines.v,v $
+// Revision 1.3  2010-01-10 22:54:10  Nathan
+// Update copyright dates
+//
+// Revision 1.2  2009/05/17 20:54:56  Nathan
+// Changed email address to opencores.org
+//
+// Revision 1.1  2008/07/22 20:28:31  Nathan
+// Changed names of all files and modules (prefixed an a, for advanced).  Cleanup, indenting.  No functional changes.
+//
+// Revision 1.3  2008/07/06 20:02:54  Nathan
+// Fixes for synthesis with Xilinx ISE (also synthesizable with 
+// Quartus II 7.0).  Ran through dos2unix.
+//
+// Revision 1.2  2008/06/26 20:52:31  Nathan
+// OR1K module tested and working.  Added copyright / license info 
+// to _define files.  Other cleanup.
+//
+
+
+
+// Register index definitions for module-internal registers
+// Index 0 is the Status register, used for stall and reset
+`define DBG_OR1K_INTREG_STATUS 3'b000
+
+// Valid commands/opcodes for the or1k debug module
+// 0000  NOP
+// 0001 - 0010 Reserved
+// 0011  Write burst, 32-bit access
+// 0100 - 0110  Reserved
+// 0111  Read burst, 32-bit access
+// 1000  Reserved
+// 1001  Internal register select/write
+// 1010 - 1100 Reserved
+// 1101  Internal register select
+// 1110 - 1111 Reserved
+
+
+`define DBG_OR1K_CMD_BWRITE32 4'h3
+`define DBG_OR1K_CMD_BREAD32  4'h7
+`define DBG_OR1K_CMD_IREG_WR  4'h9
+`define DBG_OR1K_CMD_IREG_SEL 4'hd
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_module.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_module.v
new file mode 100644
index 0000000..4e6a5dd
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_module.v
@@ -0,0 +1,460 @@
+module adbg_or1k_module 
+#(
+		parameter NB_CORES = 4
+    )
+	(
+	tck_i,
+	module_tdo_o,
+	tdi_i,
+	capture_dr_i,
+	shift_dr_i,
+	update_dr_i,
+	data_register_i,
+	module_select_i,
+	top_inhibit_o,
+	trstn_i,
+	cpu_clk_i,
+	cpu_rstn_i,
+	cpu_addr_o,
+	cpu_data_i,
+	cpu_data_o,
+	cpu_bp_i,
+	cpu_stall_o,
+	cpu_stb_o,
+	cpu_we_o,
+	cpu_ack_i
+);
+	//parameter NB_CORES = 4;
+	input wire tck_i;
+	output reg module_tdo_o;
+	input wire tdi_i;
+	input wire capture_dr_i;
+	input wire shift_dr_i;
+	input wire update_dr_i;
+	input wire [56:0] data_register_i;
+	input wire module_select_i;
+	output reg top_inhibit_o;
+	input wire trstn_i;
+	input cpu_clk_i;
+	input cpu_rstn_i;
+	output wire [(NB_CORES * 16) - 1:0] cpu_addr_o;
+	input wire [(NB_CORES * 32) - 1:0] cpu_data_i;
+	output wire [(NB_CORES * 32) - 1:0] cpu_data_o;
+	input wire [NB_CORES - 1:0] cpu_bp_i;
+	output wire [NB_CORES - 1:0] cpu_stall_o;
+	output wire [NB_CORES - 1:0] cpu_stb_o;
+	output wire [NB_CORES - 1:0] cpu_we_o;
+	input wire [NB_CORES - 1:0] cpu_ack_i;
+	reg [31:0] address_counter;
+	reg [5:0] bit_count;
+	reg [15:0] word_count;
+	reg [3:0] operation;
+	reg [31:0] data_out_shift_reg;
+	reg [2:0] internal_register_select;
+	wire [NB_CORES - 1:0] internal_reg_status;
+	reg addr_sel;
+	reg addr_ct_en;
+	reg op_reg_en;
+	reg bit_ct_en;
+	reg bit_ct_rst;
+	reg word_ct_sel;
+	reg word_ct_en;
+	reg out_reg_ld_en;
+	reg out_reg_shift_en;
+	reg out_reg_data_sel;
+	reg [1:0] tdo_output_sel;
+	reg biu_strobe;
+	reg crc_clr;
+	reg crc_en;
+	reg crc_in_sel;
+	reg crc_shift_en;
+	reg regsel_ld_en;
+	reg intreg_ld_en;
+	reg cpusel_ld_en;
+	wire word_count_zero;
+	wire bit_count_max;
+	wire module_cmd;
+	wire biu_ready;
+	wire burst_instruction;
+	wire intreg_instruction;
+	wire intreg_write;
+	wire rd_op;
+	wire crc_match;
+	wire bit_count_32;
+	wire [5:0] word_size_bits;
+	wire [2:0] address_increment;
+	wire [32:0] incremented_address;
+	wire [31:0] data_to_addr_counter;
+	wire [15:0] data_to_word_counter;
+	wire [15:0] decremented_word_count;
+	wire [31:0] address_data_in;
+	wire [15:0] count_data_in;
+	wire [3:0] operation_in;
+	wire [31:0] data_to_biu;
+	wire [31:0] data_from_biu;
+	wire [31:0] crc_data_out;
+	wire crc_data_in;
+	wire crc_serial_out;
+	wire [2:0] reg_select_data;
+	wire [31:0] out_reg_data;
+	reg [31:0] data_from_internal_reg;
+	wire status_reg_wr;
+	reg [3:0] cpu_select;
+	wire [3:0] cpu_select_in;
+	wire [15:0] status_reg_data;
+	reg [3:0] module_state;
+	reg [3:0] module_next_state;
+	assign module_cmd = ~data_register_i[56];
+	assign operation_in = data_register_i[55:52];
+	assign cpu_select_in = data_register_i[51:48];
+	assign address_data_in = data_register_i[47:16];
+	assign count_data_in = data_register_i[15:0];
+	assign data_to_biu = {tdi_i, data_register_i[56:26]};
+	assign reg_select_data = data_register_i[51:49];
+	assign status_reg_data = data_register_i[48:33];
+	assign burst_instruction = (operation_in == 4'h3) | (operation_in == 4'h7);
+	assign intreg_instruction = (operation_in == 4'h9) | (operation_in == 4'hd);
+	assign intreg_write = operation_in == 4'h9;
+	assign word_size_bits = 5'd31;
+	assign address_increment = 3'd1;
+	assign rd_op = operation[2];
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			internal_register_select = 'h0;
+		else if (regsel_ld_en)
+			internal_register_select = reg_select_data;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			cpu_select = 'h0;
+		else if (cpusel_ld_en)
+			cpu_select = cpu_select_in;
+	always @(internal_register_select or internal_reg_status)
+		case (internal_register_select)
+			3'b000: data_from_internal_reg = {{32 - NB_CORES {1'b0}}, internal_reg_status};
+			default: data_from_internal_reg = {{32 - NB_CORES {1'b0}}, internal_reg_status};
+		endcase
+	assign status_reg_wr = intreg_ld_en & (reg_select_data == 3'b000);
+	adbg_or1k_status_reg #(.NB_CORES(NB_CORES)) or1k_statusreg_i(
+		.data_i(status_reg_data),
+		.we_i(status_reg_wr),
+		.tck_i(tck_i),
+		.bp_i(cpu_bp_i),
+		.trstn_i(trstn_i),
+		.cpu_clk_i(cpu_clk_i),
+		.cpu_rstn_i(cpu_rstn_i),
+		.ctrl_reg_o(internal_reg_status),
+		.cpu_stall_o(cpu_stall_o)
+	);
+	assign data_to_addr_counter = (addr_sel ? incremented_address[31:0] : address_data_in);
+	assign incremented_address = address_counter + address_increment;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			address_counter <= 32'h00000000;
+		else if (addr_ct_en)
+			address_counter <= data_to_addr_counter;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			operation <= 4'h0;
+		else if (op_reg_en)
+			operation <= operation_in;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			bit_count <= 6'h00;
+		else if (bit_ct_rst)
+			bit_count <= 6'h00;
+		else if (bit_ct_en)
+			bit_count <= bit_count + 6'h01;
+	assign bit_count_max = (bit_count == word_size_bits ? 1'b1 : 1'b0);
+	assign bit_count_32 = (bit_count == 6'h20 ? 1'b1 : 1'b0);
+	assign data_to_word_counter = (word_ct_sel ? decremented_word_count : count_data_in);
+	assign decremented_word_count = word_count - 16'h0001;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			word_count <= 16'h0000;
+		else if (word_ct_en)
+			word_count <= data_to_word_counter;
+	assign word_count_zero = word_count == 16'h0000;
+	assign out_reg_data = (out_reg_data_sel ? data_from_internal_reg : data_from_biu);
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			data_out_shift_reg <= 32'h00000000;
+		else if (out_reg_ld_en)
+			data_out_shift_reg <= out_reg_data;
+		else if (out_reg_shift_en)
+			data_out_shift_reg <= {1'b0, data_out_shift_reg[31:1]};
+	always @(tdo_output_sel or data_out_shift_reg[0] or biu_ready or crc_match or crc_serial_out)
+		if (tdo_output_sel == 2'h0)
+			module_tdo_o <= biu_ready;
+		else if (tdo_output_sel == 2'h1)
+			module_tdo_o <= data_out_shift_reg[0];
+		else if (tdo_output_sel == 2'h2)
+			module_tdo_o <= crc_match;
+		else
+			module_tdo_o <= crc_serial_out;
+	adbg_or1k_biu #(.NB_CORES(NB_CORES)) or1k_biu_i(
+		.tck_i(tck_i),
+		.trstn_i(trstn_i),
+		.cpu_select_i(cpu_select),
+		.data_i(data_to_biu),
+		.data_o(data_from_biu),
+		.addr_i(address_counter),
+		.strobe_i(biu_strobe),
+		.rd_wrn_i(rd_op),
+		.rdy_o(biu_ready),
+		.cpu_clk_i(cpu_clk_i),
+		.cpu_rstn_i(cpu_rstn_i),
+		.cpu_addr_o(cpu_addr_o),
+		.cpu_data_i(cpu_data_i),
+		.cpu_data_o(cpu_data_o),
+		.cpu_stb_o(cpu_stb_o),
+		.cpu_we_o(cpu_we_o),
+		.cpu_ack_i(cpu_ack_i)
+	);
+	assign crc_data_in = (crc_in_sel ? tdi_i : data_out_shift_reg[0]);
+	adbg_crc32 or1k_crc_i(
+		.clk(tck_i),
+		.data(crc_data_in),
+		.enable(crc_en),
+		.shift(crc_shift_en),
+		.clr(crc_clr),
+		.rstn(trstn_i),
+		.crc_out(crc_data_out),
+		.serial_out(crc_serial_out)
+	);
+	assign crc_match = (data_register_i[56:25] == crc_data_out ? 1'b1 : 1'b0);
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_state <= 4'd0;
+		else
+			module_state <= module_next_state;
+	always @(module_state or module_select_i or update_dr_i or capture_dr_i or shift_dr_i or operation_in[2] or word_count_zero or bit_count_max or data_register_i[56] or bit_count_32 or biu_ready or module_cmd or intreg_write or decremented_word_count or burst_instruction)
+		case (module_state)
+			4'd0:
+				if ((((module_cmd && module_select_i) && update_dr_i) && burst_instruction) && operation_in[2])
+					module_next_state <= 4'd1;
+				else if (((module_cmd && module_select_i) && update_dr_i) && burst_instruction)
+					module_next_state <= 4'd5;
+				else
+					module_next_state <= 4'd0;
+			4'd1:
+				if (word_count_zero)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd2;
+			4'd2:
+				if (module_select_i && capture_dr_i)
+					module_next_state <= 4'd3;
+				else
+					module_next_state <= 4'd2;
+			4'd3:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (biu_ready)
+					module_next_state <= 4'd4;
+				else
+					module_next_state <= 4'd3;
+			4'd4:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_max && word_count_zero)
+					module_next_state <= 4'd9;
+				else
+					module_next_state <= 4'd4;
+			4'd9:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd9;
+			4'd5:
+				if (word_count_zero)
+					module_next_state <= 4'd0;
+				else if (module_select_i && capture_dr_i)
+					module_next_state <= 4'd6;
+				else
+					module_next_state <= 4'd5;
+			4'd6:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (module_select_i && data_register_i[56])
+					module_next_state <= 4'd7;
+				else
+					module_next_state <= 4'd6;
+			4'd7:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_max) begin
+					if (word_count_zero)
+						module_next_state <= 4'd10;
+					else
+						module_next_state <= 4'd7;
+				end
+				else
+					module_next_state <= 4'd7;
+			4'd8:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (word_count_zero)
+					module_next_state <= 4'd10;
+				else
+					module_next_state <= 4'd7;
+			4'd10:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else if (bit_count_32)
+					module_next_state <= 4'd11;
+				else
+					module_next_state <= 4'd10;
+			4'd11:
+				if (update_dr_i)
+					module_next_state <= 4'd0;
+				else
+					module_next_state <= 4'd11;
+			default: module_next_state <= 4'd0;
+		endcase
+	always @(module_state or module_next_state or module_select_i or update_dr_i or capture_dr_i or shift_dr_i or operation_in[2] or word_count_zero or bit_count_max or data_register_i[52] or biu_ready or intreg_instruction or burst_instruction or module_cmd or intreg_write or decremented_word_count) begin
+		addr_sel <= 1'b1;
+		addr_ct_en <= 1'b0;
+		op_reg_en <= 1'b0;
+		bit_ct_en <= 1'b0;
+		bit_ct_rst <= 1'b0;
+		word_ct_sel <= 1'b1;
+		word_ct_en <= 1'b0;
+		out_reg_ld_en <= 1'b0;
+		out_reg_shift_en <= 1'b0;
+		tdo_output_sel <= 2'b01;
+		biu_strobe <= 1'b0;
+		crc_clr <= 1'b0;
+		crc_en <= 1'b0;
+		crc_in_sel <= 1'b0;
+		crc_shift_en <= 1'b0;
+		out_reg_data_sel <= 1'b1;
+		regsel_ld_en <= 1'b0;
+		cpusel_ld_en <= 1'b0;
+		intreg_ld_en <= 1'b0;
+		top_inhibit_o <= 1'b0;
+		case (module_state)
+			4'd0: begin
+				addr_sel <= 1'b0;
+				word_ct_sel <= 1'b0;
+				if (module_select_i & shift_dr_i)
+					out_reg_shift_en <= 1'b1;
+				if (module_select_i & capture_dr_i) begin
+					out_reg_data_sel <= 1'b1;
+					out_reg_ld_en <= 1'b1;
+				end
+				if ((module_select_i & module_cmd) & update_dr_i) begin
+					if (intreg_instruction)
+						regsel_ld_en <= 1'b1;
+					if (intreg_write)
+						intreg_ld_en <= 1'b1;
+					if (burst_instruction)
+						cpusel_ld_en <= 1'b1;
+				end
+				if (module_next_state != 4'd0) begin
+					addr_ct_en <= 1'b1;
+					op_reg_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_en <= 1'b1;
+					crc_clr <= 1'b1;
+				end
+			end
+			4'd1:
+				if (!word_count_zero) begin
+					biu_strobe <= 1'b1;
+					addr_sel <= 1'b1;
+					addr_ct_en <= 1'b1;
+				end
+			4'd2:
+				;
+			4'd3: begin
+				tdo_output_sel <= 2'h0;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd4) begin
+					out_reg_data_sel <= 1'b0;
+					out_reg_ld_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe <= 1'b1;
+						addr_sel <= 1'b1;
+						addr_ct_en <= 1'b1;
+					end
+				end
+			end
+			4'd4: begin
+				tdo_output_sel <= 2'h1;
+				out_reg_shift_en <= 1'b1;
+				bit_ct_en <= 1'b1;
+				crc_en <= 1'b1;
+				crc_in_sel <= 1'b0;
+				top_inhibit_o <= 1'b1;
+				if (bit_count_max) begin
+					out_reg_data_sel <= 1'b0;
+					out_reg_ld_en <= 1'b1;
+					bit_ct_rst <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					if ((decremented_word_count != 0) && !word_count_zero) begin
+						biu_strobe <= 1'b1;
+						addr_sel <= 1'b1;
+						addr_ct_en <= 1'b1;
+					end
+				end
+			end
+			4'd9: begin
+				tdo_output_sel <= 2'h3;
+				crc_shift_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+			end
+			4'd5:
+				;
+			4'd6: begin
+				tdo_output_sel <= 2'h1;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd7) begin
+					bit_ct_en <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+					crc_en <= 1'b1;
+					crc_in_sel <= 1'b1;
+				end
+			end
+			4'd7: begin
+				bit_ct_en <= 1'b1;
+				tdo_output_sel <= 2'h1;
+				crc_en <= 1'b1;
+				crc_in_sel <= 1'b1;
+				top_inhibit_o <= 1'b1;
+				if (bit_count_max) begin
+					bit_ct_rst <= 1'b1;
+					biu_strobe <= 1'b1;
+					addr_ct_en <= 1'b1;
+					word_ct_sel <= 1'b1;
+					word_ct_en <= 1'b1;
+				end
+			end
+			4'd8: begin
+				tdo_output_sel <= 2'h0;
+				biu_strobe <= 1'b1;
+				word_ct_sel <= 1'b1;
+				word_ct_en <= 1'b1;
+				bit_ct_rst <= 1'b1;
+				addr_ct_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+			end
+			4'd10: begin
+				bit_ct_en <= 1'b1;
+				top_inhibit_o <= 1'b1;
+				if (module_next_state == 4'd11)
+					tdo_output_sel <= 2'h2;
+			end
+			4'd11: begin
+				tdo_output_sel <= 2'h2;
+				top_inhibit_o <= 1'b1;
+			end
+			default:
+				;
+		endcase
+	end
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_status_reg.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_status_reg.v
new file mode 100644
index 0000000..3d17036
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_or1k_status_reg.v
@@ -0,0 +1,74 @@
+module adbg_or1k_status_reg 
+#( 
+        parameter NB_CORES = 4
+    )
+(
+	tck_i,
+	trstn_i,
+	we_i,
+	cpu_clk_i,
+	cpu_rstn_i,
+	data_i,
+	bp_i,
+	ctrl_reg_o,
+	cpu_stall_o
+);
+	//parameter NB_CORES = 4;
+	input tck_i;
+	input trstn_i;
+	input we_i;
+	input cpu_clk_i;
+	input cpu_rstn_i;
+	input wire [15:0] data_i;
+	input wire [NB_CORES - 1:0] bp_i;
+	output wire [NB_CORES - 1:0] ctrl_reg_o;
+	output wire [NB_CORES - 1:0] cpu_stall_o;
+	reg [NB_CORES - 1:0] stall_bp;
+	reg [NB_CORES - 1:0] stall_bp_csff;
+	reg [NB_CORES - 1:0] stall_bp_tck;
+	reg [NB_CORES - 1:0] stall_reg;
+	reg [NB_CORES - 1:0] stall_reg_csff;
+	reg [NB_CORES - 1:0] stall_reg_cpu;
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i)
+			stall_bp <= 1'sb0;
+		else begin : sv2v_autoblock_1
+			reg signed [31:0] i;
+			for (i = 0; i < NB_CORES; i = i + 1)
+				if (bp_i[i])
+					stall_bp[i] <= 1'b1;
+				else if (stall_reg_cpu[i])
+					stall_bp[i] <= 1'b0;
+		end
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i) begin
+			stall_bp_csff <= 1'sb0;
+			stall_bp_tck <= 1'sb0;
+		end
+		else begin
+			stall_bp_csff <= stall_bp;
+			stall_bp_tck <= stall_bp_csff;
+		end
+	always @(posedge cpu_clk_i or negedge cpu_rstn_i)
+		if (~cpu_rstn_i) begin
+			stall_reg_csff <= 1'sb0;
+			stall_reg_cpu <= 1'sb0;
+		end
+		else begin
+			stall_reg_csff <= stall_reg;
+			stall_reg_cpu <= stall_reg_csff;
+		end
+	assign cpu_stall_o = (bp_i | stall_bp) | stall_reg_cpu;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			stall_reg <= 1'sb0;
+		else begin : sv2v_autoblock_2
+			reg signed [31:0] i;
+			for (i = 0; i < NB_CORES; i = i + 1)
+				if (stall_bp_tck[i])
+					stall_reg[i] <= 1'b1;
+				else if (we_i)
+					stall_reg[i] <= data_i[i];
+		end
+	assign ctrl_reg_o = {stall_reg};
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_defines.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_defines.v
new file mode 100644
index 0000000..95c346f
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_defines.v
@@ -0,0 +1,79 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  tap_defines.v                                               ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the JTAG Test Access Port (TAP)        ////
+////  http://www.opencores.org/projects/jtag/                     ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Igor Mohor (igorm@opencores.org)                       ////
+////                                                              ////
+////                                                              ////
+////  All additional information is avaliable in the README.txt   ////
+////  file.                                                       ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 - 2003 Authors                            ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: tap_defines.v,v $
+// Revision 1.1.1.1  2008-05-14 12:07:33  Nathan
+// Original from OpenCores
+//
+// Revision 1.3  2004/03/02 17:39:45  mohor
+// IDCODE_VALUE changed to Flextronics ID.
+//
+// Revision 1.2  2004/01/27 10:00:33  mohor
+// Unused registers removed.
+//
+// Revision 1.1  2003/12/23 14:52:14  mohor
+// Directory structure changed. New version of TAP.
+//
+//
+//
+
+
+// Define IDCODE Value
+`define IDCODE_VALUE  32'h249511c3
+// 0001             version
+// 0100100101010001 part number (IQ)
+// 00011100001      manufacturer id (flextronics)
+// 1                required by standard
+
+// Length of the Instruction register
+`define	IR_LENGTH	4
+
+// Supported Instructions
+`define EXTEST          4'b0000
+`define SAMPLE_PRELOAD  4'b0001
+`define IDCODE          4'b0010
+`define DEBUG           4'b1000
+`define MBIST           4'b1001
+`define BYPASS          4'b1111
+
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_top.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_top.v
new file mode 100644
index 0000000..972a77c
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_tap_top.v
@@ -0,0 +1,551 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  tap_top.v                                                   ////
+////                                                              ////
+////                                                              ////
+////  This file is part of the JTAG Test Access Port (TAP)        ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Igor Mohor (igorm@opencores.org)                       ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////  All additional information is avaliable in the jtag.pdf     ////
+////  file.                                                       ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 - 2008 Authors                            ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// CVS Revision History
+//
+// $Log: tap_top.v,v $
+// Revision 1.6  2011-10-24 02:18:58  natey
+// Removed '#1' delays, which were a holdover from the original version. Ran
+// through dos2unix.
+//
+// Revision 1.5  2009-06-16 02:53:58  Nathan
+// Changed some signal names for better consistency between different hardware modules. Removed stale CVS log/comments.
+//
+// Revision 1.4  2009/05/17 20:54:38  Nathan
+// Changed email address to opencores.org
+//
+// Revision 1.3  2008/06/18 18:45:07  Nathan
+// Improved reset slightly.  Cleanup.
+//
+//
+// Revision 1.2 2008/05/14 13:13:24 Nathan
+// Rewrote TAP FSM in canonical form, for readability.  Switched
+// from one-hot to binary encoding.  Made reset signal active-
+// low, per JTAG spec.  Removed FF chain for 5 TMS reset - reset
+// done in Test Logic Reset mode.  Added test_logic_reset_o and
+// run_test_idle_o signals.  Removed double registers from IR data
+// path.  Unified the registers at the output of each data register
+// to a single shared FF.
+//
+
+`include "adbg_tap_defines.v"
+
+// Top module
+module adbg_tap_top(
+                // JTAG pads
+                tms_pad_i, 
+                tck_pad_i, 
+                trstn_pad_i, 
+                tdi_pad_i, 
+                tdo_pad_o, 
+                tdo_padoe_o,
+
+                test_mode_i,
+
+                // TAP states
+				test_logic_reset_o,
+				run_test_idle_o,
+                shift_dr_o,
+                pause_dr_o, 
+                update_dr_o,
+                capture_dr_o,
+                
+                // Select signals for boundary scan or mbist
+                extest_select_o, 
+                sample_preload_select_o,
+                mbist_select_o,
+                debug_select_o,
+                
+                // TDO signal that is connected to TDI of sub-modules.
+                tdi_o, 
+                
+                // TDI signals from sub-modules
+                debug_tdo_i,    // from debug module
+                bs_chain_tdo_i, // from Boundary Scan Chain
+                mbist_tdo_i     // from Mbist Chain
+              );
+
+
+// JTAG pins
+input   tms_pad_i;      // JTAG test mode select pad
+input   tck_pad_i;      // JTAG test clock pad
+input   trstn_pad_i;     // JTAG test reset pad
+input   tdi_pad_i;      // JTAG test data input pad
+output  tdo_pad_o;      // JTAG test data output pad
+output  tdo_padoe_o;    // Output enable for JTAG test data output pad 
+
+input   test_mode_i;     // test mode input
+
+// TAP states
+output  test_logic_reset_o;
+output  run_test_idle_o;
+output  shift_dr_o;
+output  pause_dr_o;
+output  update_dr_o;
+output  capture_dr_o;
+
+// Select signals for boundary scan or mbist
+output  extest_select_o;
+output  sample_preload_select_o;
+output  mbist_select_o;
+output  debug_select_o;
+
+// TDO signal that is connected to TDI of sub-modules.
+output  tdi_o;
+
+// TDI signals from sub-modules
+input   debug_tdo_i;    // from debug module
+input   bs_chain_tdo_i; // from Boundary Scan Chain
+input   mbist_tdo_i;    // from Mbist Chain
+
+// Wires which depend on the state of the TAP FSM
+reg     test_logic_reset;
+reg     run_test_idle;
+reg     select_dr_scan;
+reg     capture_dr;
+reg     shift_dr;
+reg     exit1_dr;
+reg     pause_dr;
+reg     exit2_dr;
+reg     update_dr;
+reg     select_ir_scan;
+reg     capture_ir;
+reg     shift_ir;
+reg     exit1_ir;
+reg     pause_ir;
+reg     exit2_ir;
+reg     update_ir;
+
+// Wires which depend on the current value in the IR
+reg     extest_select;
+reg     sample_preload_select;
+reg     idcode_select;
+reg     mbist_select;
+reg     debug_select;
+reg     bypass_select;
+
+// TDO and enable
+reg     tdo_pad_o;
+reg     tdo_padoe_o;
+
+wire    s_clk_neg;
+wire    s_tck_inv;
+
+cluster_clock_inverter u_clk_inv (.clk_i(tck_pad_i), .clk_o(s_tck_inv));
+cluster_clock_mux2 u_clk_mux(
+    .clk0_i(s_tck_inv),
+    .clk1_i(tck_pad_i),
+    .clk_sel_i(test_mode_i),
+    .clk_o(s_clk_neg)
+);
+
+assign tdi_o = tdi_pad_i;
+
+assign test_logic_reset_o = test_logic_reset;
+assign run_test_idle_o = run_test_idle;
+assign shift_dr_o = shift_dr;
+assign pause_dr_o = pause_dr;
+assign update_dr_o = update_dr;
+assign capture_dr_o = capture_dr;
+
+assign extest_select_o = extest_select;
+assign sample_preload_select_o = sample_preload_select;
+assign mbist_select_o = mbist_select;
+assign debug_select_o = debug_select;
+
+
+/**********************************************************************************
+*                                                                                 *
+*   TAP State Machine: Fully JTAG compliant                                       *
+*                                                                                 *
+**********************************************************************************/
+// Definition of machine state values.  We could one-hot encode this, and use 16
+// registers, but this uses binary encoding for the minimum of 4 DFF's instead.
+`define STATE_test_logic_reset 4'hF
+`define STATE_run_test_idle    4'hC
+`define STATE_select_dr_scan   4'h7
+`define STATE_capture_dr       4'h6
+`define STATE_shift_dr         4'h2
+`define STATE_exit1_dr         4'h1
+`define STATE_pause_dr         4'h3
+`define STATE_exit2_dr         4'h0
+`define STATE_update_dr        4'h5
+`define STATE_select_ir_scan   4'h4
+`define STATE_capture_ir       4'hE
+`define STATE_shift_ir         4'hA
+`define STATE_exit1_ir         4'h9
+`define STATE_pause_ir         4'hB
+`define STATE_exit2_ir         4'h8
+`define STATE_update_ir        4'hD
+
+reg [3:0] TAP_state;          // FIXED NOT POSSIBLE IN SYNTHESIS -->  = `STATE_test_logic_reset;  // current state of the TAP controller
+reg [3:0] next_TAP_state;     // state TAP will take at next rising TCK, combinational signal
+
+// sequential part of the FSM
+always @ (posedge tck_pad_i or negedge trstn_pad_i)
+begin
+	if(trstn_pad_i == 0)
+		TAP_state = `STATE_test_logic_reset;
+	else
+		TAP_state = next_TAP_state;
+end
+
+
+// Determination of next state; purely combinatorial
+always @ (TAP_state or tms_pad_i)
+begin
+	case(TAP_state)
+		`STATE_test_logic_reset:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_test_logic_reset; 
+			else next_TAP_state = `STATE_run_test_idle;
+			end
+		`STATE_run_test_idle:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_select_dr_scan; 
+			else next_TAP_state = `STATE_run_test_idle;
+			end
+		`STATE_select_dr_scan:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_select_ir_scan; 
+			else next_TAP_state = `STATE_capture_dr;
+			end
+		`STATE_capture_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit1_dr; 
+			else next_TAP_state = `STATE_shift_dr;
+			end
+		`STATE_shift_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit1_dr; 
+			else next_TAP_state = `STATE_shift_dr;
+			end
+		`STATE_exit1_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_update_dr; 
+			else next_TAP_state = `STATE_pause_dr;
+			end
+		`STATE_pause_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit2_dr; 
+			else next_TAP_state = `STATE_pause_dr;
+			end
+		`STATE_exit2_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_update_dr; 
+			else next_TAP_state = `STATE_shift_dr;
+			end
+		`STATE_update_dr:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_select_dr_scan; 
+			else next_TAP_state = `STATE_run_test_idle;
+			end
+		`STATE_select_ir_scan:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_test_logic_reset;
+			else next_TAP_state = `STATE_capture_ir;
+			end
+		`STATE_capture_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit1_ir; 
+			else next_TAP_state = `STATE_shift_ir;
+			end
+		`STATE_shift_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit1_ir; 
+			else next_TAP_state = `STATE_shift_ir;
+			end
+		`STATE_exit1_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_update_ir;
+			else next_TAP_state = `STATE_pause_ir;
+			end
+		`STATE_pause_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_exit2_ir;
+			else next_TAP_state = `STATE_pause_ir;
+			end
+		`STATE_exit2_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_update_ir;
+			else next_TAP_state = `STATE_shift_ir;
+			end
+		`STATE_update_ir:
+			begin
+			if(tms_pad_i) next_TAP_state = `STATE_select_dr_scan;
+			else next_TAP_state = `STATE_run_test_idle;
+			end
+		default: next_TAP_state = `STATE_test_logic_reset;  // can't actually happen
+	endcase
+end
+
+
+// Outputs of state machine, pure combinatorial
+always @ (TAP_state)
+begin
+	// Default everything to 0, keeps the case statement simple
+	test_logic_reset = 1'b0;
+	run_test_idle = 1'b0;
+	select_dr_scan = 1'b0;
+	capture_dr = 1'b0;
+	shift_dr = 1'b0;
+	exit1_dr = 1'b0;
+	pause_dr = 1'b0;
+	exit2_dr = 1'b0;
+	update_dr = 1'b0;
+	select_ir_scan = 1'b0;
+	capture_ir = 1'b0;
+	shift_ir = 1'b0;
+	exit1_ir = 1'b0;
+	pause_ir = 1'b0;
+	exit2_ir = 1'b0;
+	update_ir = 1'b0;
+
+	case(TAP_state)
+		`STATE_test_logic_reset: test_logic_reset = 1'b1;
+		`STATE_run_test_idle:    run_test_idle = 1'b1;
+		`STATE_select_dr_scan:   select_dr_scan = 1'b1;
+		`STATE_capture_dr:       capture_dr = 1'b1;
+		`STATE_shift_dr:         shift_dr = 1'b1;
+		`STATE_exit1_dr:         exit1_dr = 1'b1;
+		`STATE_pause_dr:         pause_dr = 1'b1;
+		`STATE_exit2_dr:         exit2_dr = 1'b1;
+		`STATE_update_dr:        update_dr = 1'b1;
+		`STATE_select_ir_scan:   select_ir_scan = 1'b1;
+		`STATE_capture_ir:       capture_ir = 1'b1;
+		`STATE_shift_ir:         shift_ir = 1'b1;
+		`STATE_exit1_ir:         exit1_ir = 1'b1;
+		`STATE_pause_ir:         pause_ir = 1'b1;
+		`STATE_exit2_ir:         exit2_ir = 1'b1;
+		`STATE_update_ir:        update_ir = 1'b1;
+		default: ;
+	endcase
+end
+
+/**********************************************************************************
+*                                                                                 *
+*   End: TAP State Machine                                                        *
+*                                                                                 *
+**********************************************************************************/
+
+
+
+/**********************************************************************************
+*                                                                                 *
+*   jtag_ir:  JTAG Instruction Register                                           *
+*                                                                                 *
+**********************************************************************************/
+reg [`IR_LENGTH-1:0]  jtag_ir;          // Instruction register
+reg [`IR_LENGTH-1:0]  latched_jtag_ir; //, latched_jtag_ir_neg;
+wire                  instruction_tdo;
+
+always @ (posedge tck_pad_i or negedge trstn_pad_i)
+begin
+  if(trstn_pad_i == 0)
+    jtag_ir[`IR_LENGTH-1:0] <= `IR_LENGTH'b0;
+  else if (test_logic_reset == 1)
+	jtag_ir[`IR_LENGTH-1:0] <= `IR_LENGTH'b0;
+  else if(capture_ir)
+    jtag_ir <= 4'b0101;          // This value is fixed for easier fault detection
+  else if(shift_ir)
+    jtag_ir[`IR_LENGTH-1:0] <= {tdi_pad_i, jtag_ir[`IR_LENGTH-1:1]};
+end
+
+assign instruction_tdo = jtag_ir[0];  // This is latched on a negative TCK edge after the output MUX
+
+// Updating jtag_ir (Instruction Register)
+// jtag_ir should be latched on FALLING EDGE of TCK when capture_ir == 1
+always @ (posedge s_clk_neg or negedge trstn_pad_i)
+begin
+  if(trstn_pad_i == 0)
+    latched_jtag_ir <= `IDCODE;   // IDCODE selected after reset
+  else if (test_logic_reset)
+    latched_jtag_ir <= `IDCODE;   // IDCODE selected after reset
+  else if(update_ir)
+    latched_jtag_ir <= jtag_ir;
+end
+
+/**********************************************************************************
+*                                                                                 *
+*   End: jtag_ir                                                                  *
+*                                                                                 *
+**********************************************************************************/
+
+
+
+/**********************************************************************************
+*                                                                                 *
+*   idcode logic                                                                  *
+*                                                                                 *
+**********************************************************************************/
+reg [31:0] idcode_reg;
+wire        idcode_tdo;
+
+always @ (posedge tck_pad_i or negedge trstn_pad_i)
+begin
+  if(trstn_pad_i == 0)
+    idcode_reg <= `IDCODE_VALUE;   // IDCODE selected after reset
+  else if (test_logic_reset)
+    idcode_reg <= `IDCODE_VALUE;   // IDCODE selected after reset
+  else if(idcode_select & capture_dr)
+    idcode_reg <=  `IDCODE_VALUE;
+  else if(idcode_select & shift_dr)
+    idcode_reg <=  {tdi_pad_i, idcode_reg[31:1]};
+
+end
+
+assign idcode_tdo = idcode_reg[0];   // This is latched on a negative TCK edge after the output MUX
+
+/**********************************************************************************
+*                                                                                 *
+*   End: idcode logic                                                             *
+*                                                                                 *
+**********************************************************************************/
+
+
+/**********************************************************************************
+*                                                                                 *
+*   Bypass logic                                                                  *
+*                                                                                 *
+**********************************************************************************/
+wire  bypassed_tdo;
+reg   bypass_reg;  // This is a 1-bit register
+
+always @ (posedge tck_pad_i or negedge trstn_pad_i)
+begin
+  if (trstn_pad_i == 0)
+     bypass_reg <=  1'b0;
+  else if (test_logic_reset == 1)
+     bypass_reg <=  1'b0;
+  else if (bypass_select & capture_dr)
+    bypass_reg<= 1'b0;
+  else if(bypass_select & shift_dr)
+    bypass_reg<= tdi_pad_i;
+end
+
+assign bypassed_tdo = bypass_reg;   // This is latched on a negative TCK edge after the output MUX
+
+/**********************************************************************************
+*                                                                                 *
+*   End: Bypass logic                                                             *
+*                                                                                 *
+**********************************************************************************/
+
+
+/**********************************************************************************
+*                                                                                 *
+*   Selecting active data register                                                *
+*                                                                                 *
+**********************************************************************************/
+always @ (latched_jtag_ir)
+begin
+  extest_select           = 1'b0;
+  sample_preload_select   = 1'b0;
+  idcode_select           = 1'b0;
+  mbist_select            = 1'b0;
+  debug_select            = 1'b0;
+  bypass_select           = 1'b0;
+
+  case(latched_jtag_ir)    /* synthesis parallel_case */ 
+    `EXTEST:            extest_select           = 1'b1;    // External test
+    `SAMPLE_PRELOAD:    sample_preload_select   = 1'b1;    // Sample preload
+    `IDCODE:            idcode_select           = 1'b1;    // ID Code
+    `MBIST:             mbist_select            = 1'b1;    // Mbist test
+    `DEBUG:             debug_select            = 1'b1;    // Debug
+    `BYPASS:            bypass_select           = 1'b1;    // BYPASS
+    default:            bypass_select           = 1'b1;    // BYPASS
+  endcase
+end
+
+
+/**********************************************************************************
+*                                                                                 *
+*   Multiplexing TDO data                                                         *
+*                                                                                 *
+**********************************************************************************/
+reg tdo_mux_out;  // really just a wire
+
+always @ (shift_ir or instruction_tdo or latched_jtag_ir or idcode_tdo or
+          debug_tdo_i or bs_chain_tdo_i or mbist_tdo_i or bypassed_tdo or
+			bs_chain_tdo_i)
+begin
+  if(shift_ir)
+    tdo_mux_out = instruction_tdo;
+  else
+    begin
+      case(latched_jtag_ir)    // synthesis parallel_case
+        `IDCODE:            tdo_mux_out = idcode_tdo;       // Reading ID code
+        `DEBUG:             tdo_mux_out = debug_tdo_i;      // Debug
+        `SAMPLE_PRELOAD:    tdo_mux_out = bs_chain_tdo_i;   // Sampling/Preloading
+        `EXTEST:            tdo_mux_out = bs_chain_tdo_i;   // External test
+        `MBIST:             tdo_mux_out = mbist_tdo_i;      // Mbist test
+        default:            tdo_mux_out = bypassed_tdo;     // BYPASS instruction
+      endcase
+    end
+end
+
+
+// TDO changes state at negative edge of TCK
+always @ (posedge s_clk_neg or negedge trstn_pad_i)
+begin
+  if (trstn_pad_i == 0)
+    tdo_pad_o <= 1'b0;
+  else
+    tdo_pad_o <= tdo_mux_out;
+end
+
+
+// Tristate control for tdo_pad_o pin
+always @ (posedge s_clk_neg or negedge trstn_pad_i)
+begin
+  if (trstn_pad_i == 0)
+    tdo_padoe_o <= 1'b0;
+  else
+    tdo_padoe_o <= shift_ir | shift_dr;
+end
+/**********************************************************************************
+*                                                                                 *
+*   End: Multiplexing TDO data                                                    *
+*                                                                                 *
+**********************************************************************************/
+
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adbg_top.v b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_top.v
new file mode 100644
index 0000000..b133af2
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adbg_top.v
@@ -0,0 +1,264 @@
+module adbg_top 
+#(
+	parameter NB_CORES       = 4,
+	parameter AXI_ADDR_WIDTH = 32,
+	parameter AXI_DATA_WIDTH = 64,
+	parameter AXI_USER_WIDTH = 6,
+	parameter AXI_ID_WIDTH   = 3
+)
+(
+	tck_i,
+	tdi_i,
+	tdo_o,
+	trstn_i,
+	shift_dr_i,
+	pause_dr_i,
+	update_dr_i,
+	capture_dr_i,
+	debug_select_i,
+	cpu_addr_o,
+	cpu_data_i,
+	cpu_data_o,
+	cpu_bp_i,
+	cpu_stall_o,
+	cpu_stb_o,
+	cpu_we_o,
+	cpu_ack_i,
+	cpu_rst_o,
+	axi_aclk,
+	axi_aresetn,
+	axi_master_aw_valid,
+	axi_master_aw_addr,
+	axi_master_aw_prot,
+	axi_master_aw_region,
+	axi_master_aw_len,
+	axi_master_aw_size,
+	axi_master_aw_burst,
+	axi_master_aw_lock,
+	axi_master_aw_cache,
+	axi_master_aw_qos,
+	axi_master_aw_id,
+	axi_master_aw_user,
+	axi_master_aw_ready,
+	axi_master_ar_valid,
+	axi_master_ar_addr,
+	axi_master_ar_prot,
+	axi_master_ar_region,
+	axi_master_ar_len,
+	axi_master_ar_size,
+	axi_master_ar_burst,
+	axi_master_ar_lock,
+	axi_master_ar_cache,
+	axi_master_ar_qos,
+	axi_master_ar_id,
+	axi_master_ar_user,
+	axi_master_ar_ready,
+	axi_master_w_valid,
+	axi_master_w_data,
+	axi_master_w_strb,
+	axi_master_w_user,
+	axi_master_w_last,
+	axi_master_w_ready,
+	axi_master_r_valid,
+	axi_master_r_data,
+	axi_master_r_resp,
+	axi_master_r_last,
+	axi_master_r_id,
+	axi_master_r_user,
+	axi_master_r_ready,
+	axi_master_b_valid,
+	axi_master_b_resp,
+	axi_master_b_id,
+	axi_master_b_user,
+	axi_master_b_ready
+);
+	//parameter NB_CORES = 4;
+	//parameter AXI_ADDR_WIDTH = 32;
+	//parameter AXI_DATA_WIDTH = 64;
+	//parameter AXI_USER_WIDTH = 6;
+	//parameter AXI_ID_WIDTH = 3;
+	input wire tck_i;
+	input wire tdi_i;
+	output reg tdo_o;
+	input wire trstn_i;
+	input wire shift_dr_i;
+	input wire pause_dr_i;
+	input wire update_dr_i;
+	input wire capture_dr_i;
+	input wire debug_select_i;
+	output wire [(NB_CORES * 16) - 1:0] cpu_addr_o;
+	input wire [(NB_CORES * 32) - 1:0] cpu_data_i;
+	output wire [(NB_CORES * 32) - 1:0] cpu_data_o;
+	input wire [NB_CORES - 1:0] cpu_bp_i;
+	output wire [NB_CORES - 1:0] cpu_stall_o;
+	output wire [NB_CORES - 1:0] cpu_stb_o;
+	output wire [NB_CORES - 1:0] cpu_we_o;
+	input wire [NB_CORES - 1:0] cpu_ack_i;
+	output wire [NB_CORES - 1:0] cpu_rst_o;
+	input wire axi_aclk;
+	input wire axi_aresetn;
+	output wire axi_master_aw_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_aw_addr;
+	output wire [2:0] axi_master_aw_prot;
+	output wire [3:0] axi_master_aw_region;
+	output wire [7:0] axi_master_aw_len;
+	output wire [2:0] axi_master_aw_size;
+	output wire [1:0] axi_master_aw_burst;
+	output wire axi_master_aw_lock;
+	output wire [3:0] axi_master_aw_cache;
+	output wire [3:0] axi_master_aw_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_aw_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_aw_user;
+	input wire axi_master_aw_ready;
+	output wire axi_master_ar_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_ar_addr;
+	output wire [2:0] axi_master_ar_prot;
+	output wire [3:0] axi_master_ar_region;
+	output wire [7:0] axi_master_ar_len;
+	output wire [2:0] axi_master_ar_size;
+	output wire [1:0] axi_master_ar_burst;
+	output wire axi_master_ar_lock;
+	output wire [3:0] axi_master_ar_cache;
+	output wire [3:0] axi_master_ar_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_ar_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_ar_user;
+	input wire axi_master_ar_ready;
+	output wire axi_master_w_valid;
+	output wire [AXI_DATA_WIDTH - 1:0] axi_master_w_data;
+	output wire [(AXI_DATA_WIDTH / 8) - 1:0] axi_master_w_strb;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_w_user;
+	output wire axi_master_w_last;
+	input wire axi_master_w_ready;
+	input wire axi_master_r_valid;
+	input wire [AXI_DATA_WIDTH - 1:0] axi_master_r_data;
+	input wire [1:0] axi_master_r_resp;
+	input wire axi_master_r_last;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_r_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_r_user;
+	output wire axi_master_r_ready;
+	input wire axi_master_b_valid;
+	input wire [1:0] axi_master_b_resp;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_b_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_b_user;
+	output wire axi_master_b_ready;
+	wire tdo_axi;
+	wire tdo_cpu;
+	reg [63:0] input_shift_reg;
+	reg [4:0] module_id_reg;
+	wire select_cmd;
+	wire [4:0] module_id_in;
+	reg [1:0] module_selects;
+	wire select_inhibit;
+	wire [1:0] module_inhibit;
+	integer j;
+	assign select_cmd = input_shift_reg[63];
+	assign module_id_in = input_shift_reg[62:58];
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			module_id_reg <= 5'h00;
+		else if (((debug_select_i && select_cmd) && update_dr_i) && !select_inhibit)
+			module_id_reg <= module_id_in;
+	always @(*)
+		if (module_id_reg == 0)
+			module_selects = 2'b01;
+		else
+			module_selects = 2'b10;
+	always @(posedge tck_i or negedge trstn_i)
+		if (~trstn_i)
+			input_shift_reg <= 'h0;
+		else if (debug_select_i && shift_dr_i)
+			input_shift_reg <= {tdi_i, input_shift_reg[63:1]};
+	adbg_axi_module #(
+		.AXI_ADDR_WIDTH(AXI_ADDR_WIDTH),
+		.AXI_DATA_WIDTH(AXI_DATA_WIDTH),
+		.AXI_USER_WIDTH(AXI_USER_WIDTH),
+		.AXI_ID_WIDTH(AXI_ID_WIDTH)
+	) i_dbg_axi(
+		.tck_i(tck_i),
+		.module_tdo_o(tdo_axi),
+		.tdi_i(tdi_i),
+		.capture_dr_i(capture_dr_i),
+		.shift_dr_i(shift_dr_i),
+		.update_dr_i(update_dr_i),
+		.data_register_i(input_shift_reg),
+		.module_select_i(module_selects[0]),
+		.top_inhibit_o(module_inhibit[0]),
+		.trstn_i(trstn_i),
+		.axi_aclk(axi_aclk),
+		.axi_aresetn(axi_aresetn),
+		.axi_master_aw_valid(axi_master_aw_valid),
+		.axi_master_aw_addr(axi_master_aw_addr),
+		.axi_master_aw_prot(axi_master_aw_prot),
+		.axi_master_aw_region(axi_master_aw_region),
+		.axi_master_aw_len(axi_master_aw_len),
+		.axi_master_aw_size(axi_master_aw_size),
+		.axi_master_aw_burst(axi_master_aw_burst),
+		.axi_master_aw_lock(axi_master_aw_lock),
+		.axi_master_aw_cache(axi_master_aw_cache),
+		.axi_master_aw_qos(axi_master_aw_qos),
+		.axi_master_aw_id(axi_master_aw_id),
+		.axi_master_aw_user(axi_master_aw_user),
+		.axi_master_aw_ready(axi_master_aw_ready),
+		.axi_master_ar_valid(axi_master_ar_valid),
+		.axi_master_ar_addr(axi_master_ar_addr),
+		.axi_master_ar_prot(axi_master_ar_prot),
+		.axi_master_ar_region(axi_master_ar_region),
+		.axi_master_ar_len(axi_master_ar_len),
+		.axi_master_ar_size(axi_master_ar_size),
+		.axi_master_ar_burst(axi_master_ar_burst),
+		.axi_master_ar_lock(axi_master_ar_lock),
+		.axi_master_ar_cache(axi_master_ar_cache),
+		.axi_master_ar_qos(axi_master_ar_qos),
+		.axi_master_ar_id(axi_master_ar_id),
+		.axi_master_ar_user(axi_master_ar_user),
+		.axi_master_ar_ready(axi_master_ar_ready),
+		.axi_master_w_valid(axi_master_w_valid),
+		.axi_master_w_data(axi_master_w_data),
+		.axi_master_w_strb(axi_master_w_strb),
+		.axi_master_w_user(axi_master_w_user),
+		.axi_master_w_last(axi_master_w_last),
+		.axi_master_w_ready(axi_master_w_ready),
+		.axi_master_r_valid(axi_master_r_valid),
+		.axi_master_r_data(axi_master_r_data),
+		.axi_master_r_resp(axi_master_r_resp),
+		.axi_master_r_last(axi_master_r_last),
+		.axi_master_r_id(axi_master_r_id),
+		.axi_master_r_user(axi_master_r_user),
+		.axi_master_r_ready(axi_master_r_ready),
+		.axi_master_b_valid(axi_master_b_valid),
+		.axi_master_b_resp(axi_master_b_resp),
+		.axi_master_b_id(axi_master_b_id),
+		.axi_master_b_user(axi_master_b_user),
+		.axi_master_b_ready(axi_master_b_ready)
+	);
+	adbg_or1k_module #(.NB_CORES(NB_CORES)) i_dbg_cpu_or1k(
+		.tck_i(tck_i),
+		.module_tdo_o(tdo_cpu),
+		.tdi_i(tdi_i),
+		.capture_dr_i(capture_dr_i),
+		.shift_dr_i(shift_dr_i),
+		.update_dr_i(update_dr_i),
+		.data_register_i(input_shift_reg[63:7]),
+		.module_select_i(module_selects[1]),
+		.top_inhibit_o(module_inhibit[1]),
+		.trstn_i(trstn_i),
+		.cpu_clk_i(axi_aclk),
+		.cpu_rstn_i(axi_aresetn),
+		.cpu_addr_o(cpu_addr_o),
+		.cpu_data_i(cpu_data_i),
+		.cpu_data_o(cpu_data_o),
+		.cpu_bp_i(cpu_bp_i),
+		.cpu_stall_o(cpu_stall_o),
+		.cpu_stb_o(cpu_stb_o),
+		.cpu_we_o(cpu_we_o),
+		.cpu_ack_i(cpu_ack_i)
+	);
+	assign select_inhibit = |module_inhibit;
+	always @(module_id_reg or tdo_axi or tdo_cpu)
+		if (module_id_reg == 0)
+			tdo_o <= tdo_axi;
+		else if (module_id_reg == 1)
+			tdo_o <= tdo_cpu;
+		else
+			tdo_o <= 1'b0;
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/adv_dbg_if.v b/verilog/rtl/ips/adv_dbg_if/rtl/adv_dbg_if.v
new file mode 100644
index 0000000..8c5d5bb
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/adv_dbg_if.v
@@ -0,0 +1,249 @@
+module adv_dbg_if 
+#(
+	parameter NB_CORES       = 4,
+	parameter AXI_ADDR_WIDTH = 32,
+	parameter AXI_DATA_WIDTH = 64,
+	parameter AXI_USER_WIDTH = 6,
+	parameter AXI_ID_WIDTH   = 3
+)
+(
+	tms_pad_i,
+	tck_pad_i,
+	trstn_pad_i,
+	tdi_pad_i,
+	tdo_pad_o,
+	tdo_padoe_o,
+	test_mode_i,
+	cpu_clk_i,
+	cpu_addr_o,
+	cpu_data_i,
+	cpu_data_o,
+	cpu_bp_i,
+	cpu_stall_o,
+	cpu_stb_o,
+	cpu_we_o,
+	cpu_ack_i,
+	cpu_rst_o,
+	axi_aclk,
+	axi_aresetn,
+	axi_master_aw_valid,
+	axi_master_aw_addr,
+	axi_master_aw_prot,
+	axi_master_aw_region,
+	axi_master_aw_len,
+	axi_master_aw_size,
+	axi_master_aw_burst,
+	axi_master_aw_lock,
+	axi_master_aw_cache,
+	axi_master_aw_qos,
+	axi_master_aw_id,
+	axi_master_aw_user,
+	axi_master_aw_ready,
+	axi_master_ar_valid,
+	axi_master_ar_addr,
+	axi_master_ar_prot,
+	axi_master_ar_region,
+	axi_master_ar_len,
+	axi_master_ar_size,
+	axi_master_ar_burst,
+	axi_master_ar_lock,
+	axi_master_ar_cache,
+	axi_master_ar_qos,
+	axi_master_ar_id,
+	axi_master_ar_user,
+	axi_master_ar_ready,
+	axi_master_w_valid,
+	axi_master_w_data,
+	axi_master_w_strb,
+	axi_master_w_user,
+	axi_master_w_last,
+	axi_master_w_ready,
+	axi_master_r_valid,
+	axi_master_r_data,
+	axi_master_r_resp,
+	axi_master_r_last,
+	axi_master_r_id,
+	axi_master_r_user,
+	axi_master_r_ready,
+	axi_master_b_valid,
+	axi_master_b_resp,
+	axi_master_b_id,
+	axi_master_b_user,
+	axi_master_b_ready
+);
+	//parameter NB_CORES = 4;
+	//parameter AXI_ADDR_WIDTH = 32;
+	//parameter AXI_DATA_WIDTH = 64;
+	//parameter AXI_USER_WIDTH = 6;
+	//parameter AXI_ID_WIDTH = 3;
+	input wire tms_pad_i;
+	input wire tck_pad_i;
+	input wire trstn_pad_i;
+	input wire tdi_pad_i;
+	output wire tdo_pad_o;
+	output wire tdo_padoe_o;
+	input wire test_mode_i;
+	input wire [NB_CORES - 1:0] cpu_clk_i;
+	output wire [(NB_CORES * 16) - 1:0] cpu_addr_o;
+	input wire [(NB_CORES * 32) - 1:0] cpu_data_i;
+	output wire [(NB_CORES * 32) - 1:0] cpu_data_o;
+	input wire [NB_CORES - 1:0] cpu_bp_i;
+	output wire [NB_CORES - 1:0] cpu_stall_o;
+	output wire [NB_CORES - 1:0] cpu_stb_o;
+	output wire [NB_CORES - 1:0] cpu_we_o;
+	input wire [NB_CORES - 1:0] cpu_ack_i;
+	output wire [NB_CORES - 1:0] cpu_rst_o;
+	input wire axi_aclk;
+	input wire axi_aresetn;
+	output wire axi_master_aw_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_aw_addr;
+	output wire [2:0] axi_master_aw_prot;
+	output wire [3:0] axi_master_aw_region;
+	output wire [7:0] axi_master_aw_len;
+	output wire [2:0] axi_master_aw_size;
+	output wire [1:0] axi_master_aw_burst;
+	output wire axi_master_aw_lock;
+	output wire [3:0] axi_master_aw_cache;
+	output wire [3:0] axi_master_aw_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_aw_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_aw_user;
+	input wire axi_master_aw_ready;
+	output wire axi_master_ar_valid;
+	output wire [AXI_ADDR_WIDTH - 1:0] axi_master_ar_addr;
+	output wire [2:0] axi_master_ar_prot;
+	output wire [3:0] axi_master_ar_region;
+	output wire [7:0] axi_master_ar_len;
+	output wire [2:0] axi_master_ar_size;
+	output wire [1:0] axi_master_ar_burst;
+	output wire axi_master_ar_lock;
+	output wire [3:0] axi_master_ar_cache;
+	output wire [3:0] axi_master_ar_qos;
+	output wire [AXI_ID_WIDTH - 1:0] axi_master_ar_id;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_ar_user;
+	input wire axi_master_ar_ready;
+	output wire axi_master_w_valid;
+	output wire [AXI_DATA_WIDTH - 1:0] axi_master_w_data;
+	output wire [(AXI_DATA_WIDTH / 8) - 1:0] axi_master_w_strb;
+	output wire [AXI_USER_WIDTH - 1:0] axi_master_w_user;
+	output wire axi_master_w_last;
+	input wire axi_master_w_ready;
+	input wire axi_master_r_valid;
+	input wire [AXI_DATA_WIDTH - 1:0] axi_master_r_data;
+	input wire [1:0] axi_master_r_resp;
+	input wire axi_master_r_last;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_r_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_r_user;
+	output wire axi_master_r_ready;
+	input wire axi_master_b_valid;
+	input wire [1:0] axi_master_b_resp;
+	input wire [AXI_ID_WIDTH - 1:0] axi_master_b_id;
+	input wire [AXI_USER_WIDTH - 1:0] axi_master_b_user;
+	output wire axi_master_b_ready;
+	wire s_test_logic_reset;
+	wire s_run_test_idle;
+	wire s_shift_dr;
+	wire s_pause_dr;
+	wire s_update_dr;
+	wire s_capture_dr;
+	wire s_extest_select;
+	wire s_sample_preload_select;
+	wire s_mbist_select;
+	wire s_debug_select;
+	wire s_tdi;
+	wire s_debug_tdo;
+	adbg_tap_top cluster_tap_i(
+		.tms_pad_i(tms_pad_i),
+		.tck_pad_i(tck_pad_i),
+		.trstn_pad_i(trstn_pad_i),
+		.tdi_pad_i(tdi_pad_i),
+		.tdo_pad_o(tdo_pad_o),
+		.tdo_padoe_o(tdo_padoe_o),
+		.test_mode_i(test_mode_i),
+		.test_logic_reset_o(s_test_logic_reset),
+		.run_test_idle_o(s_run_test_idle),
+		.shift_dr_o(s_shift_dr),
+		.pause_dr_o(s_pause_dr),
+		.update_dr_o(s_update_dr),
+		.capture_dr_o(s_capture_dr),
+		.extest_select_o(s_extest_select),
+		.sample_preload_select_o(s_sample_preload_select),
+		.mbist_select_o(s_mbist_select),
+		.debug_select_o(s_debug_select),
+		.tdi_o(s_tdi),
+		.debug_tdo_i(s_debug_tdo),
+		.bs_chain_tdo_i(1'b0),
+		.mbist_tdo_i(1'b0)
+	);
+	adbg_top #(
+		.NB_CORES(NB_CORES),
+		.AXI_ADDR_WIDTH(AXI_ADDR_WIDTH),
+		.AXI_DATA_WIDTH(AXI_DATA_WIDTH),
+		.AXI_USER_WIDTH(AXI_USER_WIDTH),
+		.AXI_ID_WIDTH(AXI_ID_WIDTH)
+	) dbg_module_i(
+		.tck_i(tck_pad_i),
+		.tdi_i(s_tdi),
+		.tdo_o(s_debug_tdo),
+		.trstn_i(trstn_pad_i),
+		.shift_dr_i(s_shift_dr),
+		.pause_dr_i(s_pause_dr),
+		.update_dr_i(s_update_dr),
+		.capture_dr_i(s_capture_dr),
+		.debug_select_i(s_debug_select),
+		.cpu_addr_o(cpu_addr_o),
+		.cpu_data_i(cpu_data_i),
+		.cpu_data_o(cpu_data_o),
+		.cpu_bp_i(cpu_bp_i),
+		.cpu_stall_o(cpu_stall_o),
+		.cpu_stb_o(cpu_stb_o),
+		.cpu_we_o(cpu_we_o),
+		.cpu_ack_i(cpu_ack_i),
+		.cpu_rst_o(cpu_rst_o),
+		.axi_aclk(axi_aclk),
+		.axi_aresetn(axi_aresetn),
+		.axi_master_aw_valid(axi_master_aw_valid),
+		.axi_master_aw_addr(axi_master_aw_addr),
+		.axi_master_aw_prot(axi_master_aw_prot),
+		.axi_master_aw_region(axi_master_aw_region),
+		.axi_master_aw_len(axi_master_aw_len),
+		.axi_master_aw_size(axi_master_aw_size),
+		.axi_master_aw_burst(axi_master_aw_burst),
+		.axi_master_aw_lock(axi_master_aw_lock),
+		.axi_master_aw_cache(axi_master_aw_cache),
+		.axi_master_aw_qos(axi_master_aw_qos),
+		.axi_master_aw_id(axi_master_aw_id),
+		.axi_master_aw_user(axi_master_aw_user),
+		.axi_master_aw_ready(axi_master_aw_ready),
+		.axi_master_ar_valid(axi_master_ar_valid),
+		.axi_master_ar_addr(axi_master_ar_addr),
+		.axi_master_ar_prot(axi_master_ar_prot),
+		.axi_master_ar_region(axi_master_ar_region),
+		.axi_master_ar_len(axi_master_ar_len),
+		.axi_master_ar_size(axi_master_ar_size),
+		.axi_master_ar_burst(axi_master_ar_burst),
+		.axi_master_ar_lock(axi_master_ar_lock),
+		.axi_master_ar_cache(axi_master_ar_cache),
+		.axi_master_ar_qos(axi_master_ar_qos),
+		.axi_master_ar_id(axi_master_ar_id),
+		.axi_master_ar_user(axi_master_ar_user),
+		.axi_master_ar_ready(axi_master_ar_ready),
+		.axi_master_w_valid(axi_master_w_valid),
+		.axi_master_w_data(axi_master_w_data),
+		.axi_master_w_strb(axi_master_w_strb),
+		.axi_master_w_user(axi_master_w_user),
+		.axi_master_w_last(axi_master_w_last),
+		.axi_master_w_ready(axi_master_w_ready),
+		.axi_master_r_valid(axi_master_r_valid),
+		.axi_master_r_data(axi_master_r_data),
+		.axi_master_r_resp(axi_master_r_resp),
+		.axi_master_r_last(axi_master_r_last),
+		.axi_master_r_id(axi_master_r_id),
+		.axi_master_r_user(axi_master_r_user),
+		.axi_master_r_ready(axi_master_r_ready),
+		.axi_master_b_valid(axi_master_b_valid),
+		.axi_master_b_resp(axi_master_b_resp),
+		.axi_master_b_id(axi_master_b_id),
+		.axi_master_b_user(axi_master_b_user),
+		.axi_master_b_ready(axi_master_b_ready)
+	);
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/bytefifo.v b/verilog/rtl/ips/adv_dbg_if/rtl/bytefifo.v
new file mode 100644
index 0000000..ab3dc4e
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/bytefifo.v
@@ -0,0 +1,225 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  bytefifo.v                                                  ////
+////                                                              ////
+////                                                              ////
+////  A simple byte-wide FIFO with byte and free space counts     ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2010 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// This is an 8-entry, byte-wide, single-port FIFO.  It can either
+// push or pop a byte each clock cycle (but not both).  It includes
+// outputs indicating the number of bytes in the FIFO, and the number
+// of bytes free - if you don't connect BYTES_FREE, the synthesis
+// tool should eliminate the hardware to generate it.
+//
+// This attempts to use few resources.  There is only 1 counter,
+// and only 1 decoder.  The FIFO works like a big shift register:
+// bytes are always written to entry '0' of the FIFO, and older
+// bytes are shifted toward entry '7' as newer bytes are added.
+// The counter determines which entry the output reads.
+//
+// One caveat is that the DATA_OUT will glitch during a 'push'
+// operation.  If the output is being sent to another clock
+// domain, you should register it first.
+//
+// Ports:
+// CLK:  Clock for all synchronous elements
+// RST:  Zeros the counter and all registers asynchronously
+// DATA_IN: Data to be pushed into the FIFO
+// DATA_OUT: Always shows the data at the head of the FIFO, 'XX' if empty
+// PUSH_POPn: When high (and EN is high), DATA_IN will be pushed onto the
+//            FIFO and the count will be incremented at the next posedge
+//            of CLK (assuming the FIFO is not full).  When low (and EN
+//            is high), the count will be decremented and the output changed
+//            to the next value in the FIFO (assuming FIFO not empty).
+// EN: When high at posedege CLK, a push or pop operation will be performed,
+//     based on the value of PUSH_POPn, assuming sufficient data or space.
+// BYTES_AVAIL: Number of bytes in the FIFO.  May be in the range 0 to 8.
+// BYTES_FREE: Free space in the FIFO.  May be in the range 0 to 8.          
+
+
+// Top module
+module bytefifo (
+		 CLK,
+		 RSTN,
+                 DATA_IN,
+		 DATA_OUT,
+		 PUSH_POPn,
+                 EN,
+                 BYTES_AVAIL,
+		 BYTES_FREE
+		);
+
+
+   input        CLK;
+   input        RSTN;
+   input  [7:0] DATA_IN;
+   output [7:0] DATA_OUT;
+   input        PUSH_POPn;
+   input        EN;
+   output [3:0] BYTES_AVAIL;
+   output [3:0] BYTES_FREE;
+
+   reg [7:0] 	reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7;
+   reg [3:0] 	counter;
+      
+   reg [7:0]  DATA_OUT;
+   wire [3:0]  BYTES_AVAIL;
+   wire [3:0] 	BYTES_FREE;
+   wire 	push_ok;
+   wire    pop_ok;
+   
+   ///////////////////////////////////
+   // Combinatorial assignments
+   
+   assign BYTES_AVAIL = counter;  
+   assign  BYTES_FREE = 4'h8 - BYTES_AVAIL;
+   assign  push_ok = !(counter == 4'h8);
+   assign  pop_ok = !(counter == 4'h0);
+   
+   ///////////////////////////////////
+   // FIFO memory / shift registers
+   
+   // Reg 0 - takes input from DATA_IN
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg0 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg0 <= DATA_IN;
+     end
+
+
+   // Reg 1 - takes input from reg0
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg1 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg1 <= reg0;
+     end
+
+   
+   // Reg 2 - takes input from reg1
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg2 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg2 <= reg1;
+     end
+
+   
+   // Reg 3 - takes input from reg2
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg3 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg3 <= reg2;
+     end
+
+   
+   // Reg 4 - takes input from reg3
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg4 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg4 <= reg3;
+     end
+
+   
+   // Reg 5 - takes input from reg4
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg5 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg5 <= reg4;
+     end
+
+   
+   // Reg 6 - takes input from reg5
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg6 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg6 <= reg5;
+     end
+
+   
+   // Reg 7 - takes input from reg6
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)
+	  reg7 <= 8'h0;
+	else if(EN & PUSH_POPn & push_ok)
+	  reg7 <= reg6;
+     end
+
+   ///////////////////////////////////////////////////
+   // Read counter
+   // This is a 4-bit saturating up/down counter
+  // The 'saturating' is done via push_ok and pop_ok
+  
+   always @ (posedge CLK or negedge RSTN)
+     begin
+	if(~RSTN)             counter <= 4'h0;
+	else if(EN & PUSH_POPn & push_ok)  counter <= counter + 4'h1;
+	else if(EN & (~PUSH_POPn) & pop_ok)    counter <= counter - 4'h1;
+     end
+
+   /////////////////////////////////////////////////
+   // Output decoder
+   
+   always @ (counter or reg0 or reg1 or reg2 or reg3 or reg4 or reg5
+	     or reg6 or reg7)
+     begin
+	case (counter)
+	  4'h1:     DATA_OUT <= reg0; 
+	  4'h2:     DATA_OUT <= reg1;
+	  4'h3:     DATA_OUT <= reg2;
+	  4'h4:     DATA_OUT <= reg3;
+	  4'h5:     DATA_OUT <= reg4;
+	  4'h6:     DATA_OUT <= reg5;
+	  4'h7:     DATA_OUT <= reg6;
+	  4'h8:     DATA_OUT <= reg7;
+	  default:  DATA_OUT <= 8'hXX;
+	endcase
+     end
+
+   
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/syncflop.v b/verilog/rtl/ips/adv_dbg_if/rtl/syncflop.v
new file mode 100644
index 0000000..e6a8d56
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/syncflop.v
@@ -0,0 +1,126 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  syncflop.v                                                  ////
+////                                                              ////
+////                                                              ////
+////  A generic synchronization device between two clock domains  ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2010 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// This is a synchronization element between two clock domains. It
+// uses toggle signaling - that is, clock domain 1 changes the state
+// of TOGGLE_IN to indicate a change, rather than setting the level
+// high.  When TOGGLE_IN changes state, the output on D_OUT will be
+// set to level '1', and will hold that value until D_RST is held
+// high during a rising edge of DEST_CLK.  D_OUT will be updated
+// on the second rising edge of DEST_CLK after the state of
+// TOGGLE_IN has changed.
+// RESET is asynchronous.  This is necessary to coordinate the reset
+// between different clock domains with potentially different reset
+// signals.
+//
+// Ports:
+// DEST_CLK:  Clock for the target clock domain
+// D_SET:     Synchronously set the output to '1'
+// D_CLR:     Synchronously reset the output to '0'
+// RESET:     Set all FF's to '0' (asynchronous)
+// TOGGLE_IN: Toggle data signal from source clock domain
+// D_OUT:     Output to clock domain 2
+
+
+// Top module
+module syncflop(
+                DEST_CLK,
+		D_SET,
+		D_RST,
+		RESETN,
+                TOGGLE_IN,
+                D_OUT
+		);
+
+
+   input   DEST_CLK;
+   input   D_SET;
+   input   D_RST;
+   input   RESETN;
+   input   TOGGLE_IN;
+   output  D_OUT;
+
+   reg 	   sync1;
+   reg 	   sync2;
+   reg 	   syncprev;
+   reg 	   srflop;
+   
+   wire    syncxor;
+   wire    srinput;
+   wire    D_OUT;
+
+   // Combinatorial assignments
+   assign  syncxor = sync2 ^ syncprev;
+   assign  srinput = syncxor | D_SET;  
+   assign  D_OUT = srflop | syncxor;
+ 	   
+   // First DFF (always enabled)
+   always @ (posedge DEST_CLK or negedge RESETN)
+     begin
+	if(~RESETN) sync1 <= 1'b0;
+	else sync1 <= TOGGLE_IN;
+     end
+
+	   
+   // Second DFF (always enabled)
+   always @ (posedge DEST_CLK or negedge RESETN)
+     begin
+	if(~RESETN) sync2 <= 1'b0;
+	else sync2 <= sync1;
+     end
+
+	   
+   // Third DFF (always enabled, used to detect toggles)
+   always @ (posedge DEST_CLK or negedge RESETN)
+     begin
+	if(~RESETN) syncprev <= 1'b0;
+	else syncprev <= sync2;
+     end
+
+   
+   // Set/Reset FF (holds detected toggles)
+   always @ (posedge DEST_CLK or negedge RESETN)
+     begin
+	if(~RESETN)         srflop <= 1'b0;
+	else if(D_RST)    srflop <= 1'b0;
+	else if (srinput) srflop <= 1'b1;
+     end
+   
+
+endmodule
diff --git a/verilog/rtl/ips/adv_dbg_if/rtl/syncreg.v b/verilog/rtl/ips/adv_dbg_if/rtl/syncreg.v
new file mode 100644
index 0000000..ecc9764
--- /dev/null
+++ b/verilog/rtl/ips/adv_dbg_if/rtl/syncreg.v
@@ -0,0 +1,158 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  syncreg.v                                                   ////
+////                                                              ////
+////                                                              ////
+////  Synchronizes a register between two clock domains           ////
+////                                                              ////
+////  Author(s):                                                  ////
+////       Nathan Yawn (nathan.yawn@opencores.org)                ////
+////                                                              ////
+////                                                              ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2010 Authors                                   ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+//
+// This is a synchronization element between two clock domains. Domain A
+// is considered the 'source' domain (produces the data), and Domain B
+// is considered the 'destination' domain (consumes the data).  It is assumed
+// that clock A is faster than clock B, but this element will work
+// regardless.  The idea here is NOT to insure that domain B sees every
+// change to the value generated by domain A.  Rather, this device
+// attempts to keep the value seen by domain B as current as possible,
+// always updating to the latest value of the input in domain A.
+// Thus, there may be dozens or hundreds of changes to register A
+// which are not seen by domain B.  There is no external acknowledge
+// of receipt from domain B.  Domain B simply wants the most current
+// value of register A possible at any given time.
+// Note the reset is asynchronous; this is necessary to coordinate between
+// two clock domains which may have separate reset signals.  I could find
+// no other way to insure correct initialization with two separate 
+// reset signals.
+//
+// Ports:
+// CLKA:  Clock for the source domain
+// CLKB:  Clock for the destination domain
+// RST:  Asynchronously resets all sync elements, prepares
+//       unit for operation.
+// DATA_IN:  Data input from clock domain A
+// DATA_OUT: Data output to clock domain B
+// 
+
+
+// Top module
+module syncreg (
+                CLKA,
+		CLKB,
+		RSTN,
+                DATA_IN,
+                DATA_OUT
+		);
+
+
+   input   CLKA;
+   input   CLKB;
+   input   RSTN;
+   input   [3:0] DATA_IN;
+   output  [3:0] DATA_OUT;
+
+   reg 	   [3:0] regA;
+   reg 	   [3:0] regB;
+   reg 	   strobe_toggle;
+   reg 	   ack_toggle;
+   
+   wire    A_not_equal;
+   wire    A_enable;
+   wire    strobe_sff_out;
+   wire    ack_sff_out;
+   wire [3:0]   DATA_OUT;
+
+   // Combinatorial assignments
+   assign  A_enable = A_not_equal & ack_sff_out;
+   assign  A_not_equal = !(DATA_IN == regA);
+   assign DATA_OUT = regB;   
+ 	   
+   // register A (latches input any time it changes)
+   always @ (posedge CLKA or negedge RSTN)
+     begin
+	if(~RSTN)
+	  regA <= 4'b0;
+	else if(A_enable)
+	  regA <= DATA_IN;
+     end
+
+	   
+   // register B (latches data from regA when enabled by the strobe SFF)
+   always @ (posedge CLKB or negedge RSTN)
+     begin
+	if(~RSTN)
+	  regB <= 4'b0;
+	else if(strobe_sff_out)
+	  regB <= regA;
+     end
+
+	   
+   // 'strobe' toggle FF
+   always @ (posedge CLKA or negedge RSTN)
+     begin
+	if(~RSTN)
+	  strobe_toggle <= 1'b0;
+	else if(A_enable)
+	  strobe_toggle <= ~strobe_toggle;
+     end
+
+   
+   // 'ack' toggle FF
+   // This is set to '1' at reset, to initialize the unit.
+   always @ (posedge CLKB or negedge RSTN)
+     begin
+	if(~RSTN)
+	  ack_toggle <= 1'b1;
+	else if (strobe_sff_out)
+	  ack_toggle <= ~ack_toggle;
+     end
+   
+   // 'strobe' sync element
+   syncflop strobe_sff (
+			.DEST_CLK (CLKB),
+			.D_SET (1'b0),
+			.D_RST (strobe_sff_out),
+			.RESETN (RSTN),
+			.TOGGLE_IN (strobe_toggle),
+			.D_OUT (strobe_sff_out)
+			);
+ 
+   // 'ack' sync element
+   syncflop ack_sff (
+		     .DEST_CLK (CLKA),
+		     .D_SET (1'b0),
+		     .D_RST (A_enable),
+		     .RESETN (RSTN),
+		     .TOGGLE_IN (ack_toggle),
+		     .D_OUT (ack_sff_out)
+		     );  
+endmodule
