mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-30 02:32:53 +08:00
commit
f753325686
@ -194,7 +194,6 @@ module axi_elink(/*AUTOARG*/
|
||||
wire rx_lclk; // From eclocks of eclocks.v
|
||||
wire rx_lclk_div4; // From eclocks of eclocks.v
|
||||
wire rx_lclk_pll; // From elink of elink.v
|
||||
wire rx_ref_clk; // From eclocks of eclocks.v
|
||||
wire rxrd_access; // From elink of elink.v
|
||||
wire [PW-1:0] rxrd_packet; // From elink of elink.v
|
||||
wire rxrd_wait; // From emaxi of emaxi.v
|
||||
@ -260,7 +259,6 @@ module axi_elink(/*AUTOARG*/
|
||||
.tx_lclk_div4 (tx_lclk_div4),
|
||||
.rx_lclk (rx_lclk),
|
||||
.rx_lclk_div4 (rx_lclk_div4),
|
||||
.rx_ref_clk (rx_ref_clk),
|
||||
.rxi_lclk_p (rxi_lclk_p),
|
||||
.rxi_lclk_n (rxi_lclk_n),
|
||||
.rxi_frame_p (rxi_frame_p),
|
||||
@ -293,7 +291,6 @@ module axi_elink(/*AUTOARG*/
|
||||
.tx_lclk_div4 (tx_lclk_div4),
|
||||
.rx_lclk (rx_lclk),
|
||||
.rx_lclk_div4 (rx_lclk_div4),
|
||||
.rx_ref_clk (rx_ref_clk),
|
||||
.e_cclk_p (e_cclk_p),
|
||||
.e_cclk_n (e_cclk_n),
|
||||
.elink_reset (elink_reset),
|
||||
|
@ -18,25 +18,18 @@
|
||||
module eclocks (/*AUTOARG*/
|
||||
// Outputs
|
||||
tx_lclk, tx_lclk90, tx_lclk_div4, rx_lclk, rx_lclk_div4,
|
||||
rx_ref_clk, e_cclk_p, e_cclk_n, elink_reset, e_resetb,
|
||||
e_cclk_p, e_cclk_n, elink_reset, e_resetb,
|
||||
// Inputs
|
||||
reset, elink_en, sys_clk, rx_clkin
|
||||
);
|
||||
|
||||
parameter RCW = 4; // reset counter width
|
||||
parameter RCW = 8; // reset counter width
|
||||
|
||||
//CCLK PLL
|
||||
parameter SYS_CLK_PERIOD = 10; // (2.5-100ns, set by system)
|
||||
parameter CCLK_VCO_MULT = 12; // 1200MHz
|
||||
parameter MMCM_VCO_MULT = 12; // 1200MHz
|
||||
parameter CCLK_DIVIDE = 2; // 600MHz
|
||||
|
||||
//RX PLL
|
||||
parameter RXCLK_PERIOD = 3.3333333; // (2.5-100ns, set by system)
|
||||
parameter RXCLK_VCO_MULT = 4; // 1200MHz
|
||||
parameter RXCLK_DIVIDE = 4; // 300MHz
|
||||
parameter RXCLK_PHASE = 90; // sim setting, tune for FPGA
|
||||
parameter RXCLK_DIV4_PHASE = 22.5; // tune for FPGA!
|
||||
|
||||
//TX (WITH RX FOR NOW...)
|
||||
parameter TXCLK_DIVIDE = 4; // 300MHz default
|
||||
|
||||
@ -57,8 +50,7 @@ module eclocks (/*AUTOARG*/
|
||||
//RX Clocks
|
||||
output rx_lclk; // rx high speed clock for DDR IO
|
||||
output rx_lclk_div4; // rx slow clock for logic
|
||||
output rx_ref_clk; // clock for idelay element
|
||||
|
||||
|
||||
//Epiphany "free running" clock
|
||||
output e_cclk_p, e_cclk_n;
|
||||
|
||||
@ -66,22 +58,48 @@ module eclocks (/*AUTOARG*/
|
||||
output elink_reset; // reset for elink logic & IO
|
||||
output e_resetb; // reset fpr Epiphany chip
|
||||
|
||||
//############
|
||||
//# WIRES
|
||||
//############
|
||||
|
||||
//CCLK
|
||||
wire cclk_reset;
|
||||
wire cclk_i;
|
||||
wire cclk_bufio;
|
||||
wire cclk_oddr;
|
||||
|
||||
//Idelay controller
|
||||
wire idelay_reset;
|
||||
wire idelay_ready; //ignore this?
|
||||
wire idelay_ref_clk_i;
|
||||
wire idelay_ref_clk;
|
||||
|
||||
//RX
|
||||
wire rx_lclk_i;
|
||||
wire rx_lclk_div4_i;
|
||||
|
||||
//TX
|
||||
wire tx_lclk_i;
|
||||
wire tx_lclk90_i;
|
||||
wire tx_lckl_div4_i;
|
||||
|
||||
//MMCM feedback
|
||||
wire mmcm_fb_in;
|
||||
wire mmcm_fb_out;
|
||||
|
||||
//###########################
|
||||
// RESET STATE MACHINE
|
||||
//###########################
|
||||
|
||||
wire cclk_locked;
|
||||
wire lclk_locked;
|
||||
reg [RCW:0] reset_counter = 'b0; //works b/c of free running counter!
|
||||
reg heartbeat;
|
||||
reg reset_in;
|
||||
reg reset_sync;
|
||||
reg pll_locked_sync;
|
||||
reg pll_locked;
|
||||
wire pll_reset;
|
||||
|
||||
wire mmcm_reset;
|
||||
reg [2:0] reset_state;
|
||||
reg cclk_locked_reg;
|
||||
reg cclk_locked_sync;
|
||||
reg mmcm_locked_reg;
|
||||
reg mmcm_locked_sync;
|
||||
|
||||
//wrap around counter that generates a 1 cycle heartbeat
|
||||
//free running counter...
|
||||
@ -94,17 +112,15 @@ module eclocks (/*AUTOARG*/
|
||||
//two clock synchronizer
|
||||
always @ (posedge sys_clk)
|
||||
begin
|
||||
cclk_locked_reg <= cclk_locked;
|
||||
cclk_locked_sync <= cclk_locked_reg;
|
||||
pll_locked_sync <= cclk_locked & lclk_locked;
|
||||
mmcm_locked_reg <= mmcm_locked;
|
||||
mmcm_locked_sync <= mmcm_locked_reg;
|
||||
reset_sync <= (reset | ~elink_en);
|
||||
reset_in <= reset_sync;
|
||||
pll_locked <= pll_locked_sync;
|
||||
end
|
||||
|
||||
`define RESET_ALL 3'b000
|
||||
`define START_PLL 3'b001
|
||||
`define STOP_PLL 3'b010
|
||||
`define START_MMCM 3'b001
|
||||
`define STOP_CCLK 3'b010
|
||||
`define START_EPIPHANY 3'b011
|
||||
`define HOLD_IT 3'b100
|
||||
`define ACTIVE 3'b101
|
||||
@ -117,16 +133,16 @@ module eclocks (/*AUTOARG*/
|
||||
else if(heartbeat)
|
||||
case(reset_state[2:0])
|
||||
`RESET_ALL :
|
||||
reset_state[2:0] <= `START_PLL;
|
||||
`START_PLL :
|
||||
if(cclk_locked_sync)
|
||||
reset_state[2:0] <= `STOP_PLL;
|
||||
`STOP_PLL :
|
||||
reset_state[2:0] <= `START_MMCM;
|
||||
`START_MMCM :
|
||||
if(mmcm_locked_sync)
|
||||
reset_state[2:0] <= `STOP_CCLK;
|
||||
`STOP_CCLK :
|
||||
reset_state[2:0] <= `START_EPIPHANY;
|
||||
`START_EPIPHANY :
|
||||
reset_state[2:0] <= `HOLD_IT;
|
||||
`HOLD_IT :
|
||||
if(cclk_locked_sync)
|
||||
if(mmcm_locked_sync) //TODO: this is not necessary
|
||||
reset_state[2:0] <= `ACTIVE;
|
||||
`ACTIVE:
|
||||
reset_state[2:0] <= `ACTIVE; //stay there until nex reset
|
||||
@ -134,32 +150,29 @@ module eclocks (/*AUTOARG*/
|
||||
|
||||
|
||||
//reset PLL during 'reset' and during quiet time around reset edge
|
||||
assign pll_reset = (reset_state[2:0]==`RESET_ALL) |
|
||||
(reset_state[2:0]==`STOP_PLL) |
|
||||
(reset_state[2:0]==`START_EPIPHANY);
|
||||
assign mmcm_reset = (reset_state[2:0]==`RESET_ALL);
|
||||
|
||||
assign idelay_reset = (reset_state[2:0]==`RESET_ALL) |
|
||||
(reset_state[2:0]==`START_MMCM);
|
||||
|
||||
assign cclk_reset = (reset_state[2:0]==`STOP_CCLK) |
|
||||
(reset_state[2:0]==`START_EPIPHANY);
|
||||
|
||||
assign e_resetb = (reset_state[2:0]==`START_EPIPHANY) |
|
||||
(reset_state[2:0]==`HOLD_IT) |
|
||||
(reset_state[2:0]==`ACTIVE);
|
||||
|
||||
assign elink_reset = (reset_state[2:0]!=`ACTIVE);
|
||||
|
||||
|
||||
`ifdef TARGET_XILINX
|
||||
|
||||
wire cclk_fb_in;
|
||||
wire cclk_fb_out;
|
||||
wire lclk_fb_in;
|
||||
wire lclk_fb_out;
|
||||
wire cclk;
|
||||
wire cclk_alt;
|
||||
|
||||
//###########################
|
||||
// MMCM/PLL FOR CCLK AND TX
|
||||
//###########################
|
||||
MMCME2_ADV
|
||||
#(
|
||||
.BANDWIDTH("OPTIMIZED"),
|
||||
.CLKFBOUT_MULT_F(CCLK_VCO_MULT),
|
||||
.CLKFBOUT_MULT_F(MMCM_VCO_MULT),
|
||||
.CLKFBOUT_PHASE(0.0),
|
||||
.CLKIN1_PERIOD(SYS_CLK_PERIOD),
|
||||
.CLKOUT0_DIVIDE_F(CCLK_DIVIDE), // cclk
|
||||
@ -188,21 +201,21 @@ module eclocks (/*AUTOARG*/
|
||||
.STARTUP_WAIT("FALSE")
|
||||
) pll_cclk
|
||||
(
|
||||
.CLKOUT0(cclk),
|
||||
.CLKOUT0(cclk_i),
|
||||
.CLKOUT0B(),
|
||||
.CLKOUT1(tx_lclk),
|
||||
.CLKOUT1(tx_lclk_i),
|
||||
.CLKOUT1B(),
|
||||
.CLKOUT2(tx_lclk90),
|
||||
.CLKOUT2(tx_lclk90_i),
|
||||
.CLKOUT2B(),
|
||||
.CLKOUT3(tx_lclk_div4),
|
||||
.CLKOUT3(tx_lclk_div4_i),
|
||||
.CLKOUT3B(),
|
||||
.CLKOUT4(rx_ref_clk),
|
||||
.CLKOUT4(idelay_ref_clk_i),
|
||||
.CLKOUT5(),
|
||||
.CLKOUT6(),
|
||||
.PWRDWN(1'b0),
|
||||
.RST(pll_reset), //reset
|
||||
.CLKFBIN(cclk_fb_in),
|
||||
.CLKFBOUT(cclk_fb_out), //feedback clock
|
||||
.RST(mmcm_reset), //reset
|
||||
.CLKFBIN(mmcm_fb_in),
|
||||
.CLKFBOUT(mmcm_fb_out), //feedback clock
|
||||
.CLKIN1(sys_clk), //input clock
|
||||
.CLKIN2(1'b0),
|
||||
.CLKINSEL(1'b1),
|
||||
@ -213,7 +226,7 @@ module eclocks (/*AUTOARG*/
|
||||
.DWE(1'b0),
|
||||
.DRDY(),
|
||||
.DO(),
|
||||
.LOCKED(cclk_locked), //locked indicator
|
||||
.LOCKED(mmcm_locked), //locked indicator
|
||||
.PSCLK(1'b0),
|
||||
.PSEN(1'b0),
|
||||
.PSDONE(),
|
||||
@ -221,96 +234,69 @@ module eclocks (/*AUTOARG*/
|
||||
.CLKFBSTOPPED(),
|
||||
.CLKINSTOPPED()
|
||||
);
|
||||
|
||||
BUFG pll_cclk_bufg(.I(cclk_fb_out), .O(cclk_fb_in));
|
||||
|
||||
`ifdef EPHYCARD //Ephycard has cclk in a different region
|
||||
wire cclk_bufmr;
|
||||
wire cclk_bufio;
|
||||
wire cclk_oddr;
|
||||
|
||||
|
||||
//Tx clock buffers TODO: change to bufr? change port in MMCM in that case!!
|
||||
BUFG tx_lclk_bufg_i(.I(tx_lclk_i), .O(tx_lclk));
|
||||
BUFG tx_lclk_div4_bufg_i (.I(tx_lclk_div4_i), .O(tx_lclk_div4));
|
||||
BUFG tx_lclk90_bufg_i (.I(tx_lclk90_i), .O(tx_lclk90));
|
||||
|
||||
//Idelay ref clock buffer
|
||||
BUFG idelay_ref_bufg_i(.I(idelay_ref_clk_i), .O(idelay_ref_clk));
|
||||
|
||||
//Rx clock buffers
|
||||
BUFR rx_lclk_bufr_i(.I(rx_clkin), .O(rx_lclk));
|
||||
|
||||
BUFR #(.BUFR_DIVIDE("4"))
|
||||
rx_lclk_div4_bufr_i
|
||||
(
|
||||
.I(rx_clkin),
|
||||
.O(rx_lclk_div4),
|
||||
.CE(1'b1),
|
||||
.CLR(1'b0));
|
||||
|
||||
//Feedback buffer
|
||||
BUFR mmcm_fb_bufr_i(.I(mmcm_fb_out), .O(mmcm_fb_in));
|
||||
|
||||
|
||||
//###########################
|
||||
// CCLK
|
||||
//###########################
|
||||
|
||||
//CCLK differential buffer
|
||||
OBUFDS cclk_obuf (.O (e_cclk_p),
|
||||
.OB (e_cclk_n),
|
||||
.I (cclk_oddr)
|
||||
);
|
||||
|
||||
ODDR #(.DDR_CLK_EDGE ("SAME_EDGE"))
|
||||
oddr_lclk (
|
||||
.Q (cclk_oddr),
|
||||
.C (cclk_bufio),
|
||||
.CE (1'b1),
|
||||
.D1 (1'b1),
|
||||
.D2 (1'b0),
|
||||
.R (1'b0),
|
||||
.S (1'b0)
|
||||
);
|
||||
|
||||
BUFIO bufio_cclk(.O(cclk_bufio), .I(cclk_bufmr));
|
||||
BUFMR bufmr_cclk(.O(cclk_bufmr), .I(cclk));
|
||||
`else
|
||||
OBUFDS cclk_obuf (.O (e_cclk_p),
|
||||
.OB (e_cclk_n),
|
||||
.I (cclk)
|
||||
);
|
||||
`endif
|
||||
|
||||
//###########################
|
||||
// PLL RX CLOCK ALIGNMENT
|
||||
//###########################
|
||||
//CCLK oddr
|
||||
ODDR #(.DDR_CLK_EDGE ("SAME_EDGE"),
|
||||
.SRTYPE("ASYNC"))
|
||||
oddr_lclk (
|
||||
.Q (cclk_oddr),
|
||||
.C (cclk_bufio),
|
||||
.CE (1'b1),
|
||||
.D1 (1'b1),
|
||||
.D2 (1'b0),
|
||||
.R (1'b0),
|
||||
.S (1'b0));
|
||||
|
||||
//CCLK bufio
|
||||
BUFIO bufio_cclk(.O(cclk_bufio), .I(cclk_i));
|
||||
|
||||
|
||||
|
||||
PLLE2_ADV
|
||||
#(
|
||||
.BANDWIDTH("OPTIMIZED"),
|
||||
.CLKFBOUT_MULT(RXCLK_VCO_MULT),
|
||||
.CLKFBOUT_PHASE(0.0),
|
||||
.CLKIN1_PERIOD(RXCLK_PERIOD),
|
||||
.CLKOUT0_DIVIDE(CCLK_DIVIDE), // cclk
|
||||
.CLKOUT1_DIVIDE(TXCLK_DIVIDE), // tx_lclk
|
||||
.CLKOUT2_DIVIDE(TXCLK_DIVIDE), // tx_lclk90
|
||||
.CLKOUT3_DIVIDE(TXCLK_DIVIDE*4), // tx_lclk_div4
|
||||
.CLKOUT4_DIVIDE(RXCLK_DIVIDE), // rx_lclk
|
||||
.CLKOUT5_DIVIDE(RXCLK_DIVIDE*4), // rx_lclk_div4
|
||||
.CLKOUT0_DUTY_CYCLE(0.5),
|
||||
.CLKOUT1_DUTY_CYCLE(0.5),
|
||||
.CLKOUT2_DUTY_CYCLE(0.5),
|
||||
.CLKOUT3_DUTY_CYCLE(0.5),
|
||||
.CLKOUT4_DUTY_CYCLE(0.5),
|
||||
.CLKOUT5_DUTY_CYCLE(0.5),
|
||||
.CLKOUT0_PHASE(0.0),
|
||||
.CLKOUT1_PHASE(0.0),
|
||||
.CLKOUT2_PHASE(90.0),
|
||||
.CLKOUT3_PHASE(0.0),
|
||||
.CLKOUT4_PHASE(RXCLK_PHASE),
|
||||
.CLKOUT5_PHASE(RXCLK_DIV4_PHASE),
|
||||
.DIVCLK_DIVIDE(1.0),
|
||||
.REF_JITTER1(0.01),
|
||||
.STARTUP_WAIT("FALSE")
|
||||
) pll_elink
|
||||
(
|
||||
.CLKOUT0(cclk_alt),
|
||||
.CLKOUT1(),
|
||||
.CLKOUT2(),
|
||||
.CLKOUT3(),
|
||||
.CLKOUT4(rx_lclk),
|
||||
.CLKOUT5(rx_lclk_div4),
|
||||
.PWRDWN(1'b0),
|
||||
.RST(pll_reset),
|
||||
.CLKFBIN(lclk_fb_in),
|
||||
.CLKFBOUT(lclk_fb_out),
|
||||
.CLKIN1(rx_clkin),
|
||||
.CLKIN2(1'b0),
|
||||
.CLKINSEL(1'b1),
|
||||
.DADDR(7'b0),
|
||||
.DCLK(1'b0),
|
||||
.DEN(1'b0),
|
||||
.DI(16'b0),
|
||||
.DWE(1'b0),
|
||||
.DRDY(),
|
||||
.DO(),
|
||||
.LOCKED(lclk_locked)
|
||||
);
|
||||
|
||||
BUFG pll_elink_bufg(.I(lclk_fb_out), .O(lclk_fb_in));
|
||||
//###########################
|
||||
// Idelay controller
|
||||
//###########################
|
||||
|
||||
|
||||
(* IODELAY_GROUP = "IDELAY_GROUP" *) // Group name for IDELAYCTRL
|
||||
IDELAYCTRL idelayctrl_inst
|
||||
(
|
||||
.RDY(idelay_ready), // check ready flag in reset sequence?
|
||||
.REFCLK(idelay_ref_clk),//200MHz clk (78ps tap delay)
|
||||
.RST(idelay_reset));
|
||||
|
||||
`endif // `ifdef TARGET_XILINX
|
||||
|
||||
|
@ -8,7 +8,7 @@ module elink(/*AUTOARG*/
|
||||
timeout,
|
||||
// Inputs
|
||||
reset, sys_clk, tx_lclk, tx_lclk90, tx_lclk_div4, rx_lclk,
|
||||
rx_lclk_div4, rx_ref_clk, rxi_lclk_p, rxi_lclk_n, rxi_frame_p,
|
||||
rx_lclk_div4, rxi_lclk_p, rxi_lclk_n, rxi_frame_p,
|
||||
rxi_frame_n, rxi_data_p, rxi_data_n, txi_wr_wait_p, txi_wr_wait_n,
|
||||
txi_rd_wait_p, txi_rd_wait_n, rxwr_wait, rxrd_wait, rxrr_wait,
|
||||
txwr_access, txwr_packet, txrd_access, txrd_packet, txrr_access,
|
||||
@ -31,7 +31,6 @@ module elink(/*AUTOARG*/
|
||||
input tx_lclk_div4; // slow tx clock for core logic
|
||||
input rx_lclk; // rx input clock tweaked by pll for IO
|
||||
input rx_lclk_div4; // slow clock for rx logic
|
||||
input rx_ref_clk; // 200MHz ref clock for rx idelay elements
|
||||
output rx_lclk_pll; // rx_lclk pass through input for pll
|
||||
|
||||
/********************************/
|
||||
@ -199,7 +198,6 @@ module elink(/*AUTOARG*/
|
||||
.sys_clk (sys_clk),
|
||||
.rx_lclk (rx_lclk),
|
||||
.rx_lclk_div4 (rx_lclk_div4),
|
||||
.rx_ref_clk (rx_ref_clk),
|
||||
.rxi_lclk_p (rxi_lclk_p),
|
||||
.rxi_lclk_n (rxi_lclk_n),
|
||||
.rxi_frame_p (rxi_frame_p),
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
//These constants are mutually exclusive
|
||||
`define TARGET_XILINX
|
||||
//`define EPHYCARD
|
||||
`define CFG_AW 32
|
||||
`define CFG_DW 32
|
||||
`define CFG_LW 8
|
||||
|
@ -5,7 +5,7 @@ module erx (/*AUTOARG*/
|
||||
rxrr_access, rxrr_packet, erx_cfg_wait, timeout, mailbox_full,
|
||||
mailbox_not_empty,
|
||||
// Inputs
|
||||
erx_reset, sys_reset, sys_clk, rx_lclk, rx_lclk_div4, rx_ref_clk,
|
||||
erx_reset, sys_reset, sys_clk, rx_lclk, rx_lclk_div4,
|
||||
rxi_lclk_p, rxi_lclk_n, rxi_frame_p, rxi_frame_n, rxi_data_p,
|
||||
rxi_data_n, rxwr_wait, rxrd_wait, rxrr_wait, erx_cfg_access,
|
||||
erx_cfg_packet
|
||||
@ -26,7 +26,6 @@ module erx (/*AUTOARG*/
|
||||
input sys_clk; // system clock for rx fifos
|
||||
input rx_lclk; // fast clock for io
|
||||
input rx_lclk_div4; // slow clock for rest of logic
|
||||
input rx_ref_clk; // idelay reference clock
|
||||
output rx_lclk_pll; // clock output for pll
|
||||
|
||||
//FROM IO Pins
|
||||
@ -100,7 +99,6 @@ module erx (/*AUTOARG*/
|
||||
// Inputs
|
||||
.rx_lclk (rx_lclk),
|
||||
.rx_lclk_div4 (rx_lclk_div4),
|
||||
.rx_ref_clk (rx_ref_clk),
|
||||
.rxi_lclk_p (rxi_lclk_p),
|
||||
.rxi_lclk_n (rxi_lclk_n),
|
||||
.rxi_frame_p (rxi_frame_p),
|
||||
|
@ -7,7 +7,7 @@ module erx_io (/*AUTOARG*/
|
||||
rx_lclk_pll, rxo_wr_wait_p, rxo_wr_wait_n, rxo_rd_wait_p,
|
||||
rxo_rd_wait_n, rx_access, rx_burst, rx_packet,
|
||||
// Inputs
|
||||
reset, rx_lclk, rx_lclk_div4, rx_ref_clk, rxi_lclk_p, rxi_lclk_n,
|
||||
reset, rx_lclk, rx_lclk_div4, rxi_lclk_p, rxi_lclk_n,
|
||||
rxi_frame_p, rxi_frame_n, rxi_data_p, rxi_data_n, rx_wr_wait,
|
||||
rx_rd_wait
|
||||
);
|
||||
@ -15,13 +15,16 @@ module erx_io (/*AUTOARG*/
|
||||
parameter IOSTD_ELINK = "LVDS_25";
|
||||
parameter PW = 104;
|
||||
|
||||
// Can we do this in a better way?
|
||||
parameter [8:0] RX_TAP_DELAY [8:0] = {10,11,10,10,10,11,11,11,11};
|
||||
|
||||
|
||||
//#########################
|
||||
//# reset, clocks
|
||||
//#########################
|
||||
input reset; // reset
|
||||
input rx_lclk; // fast I/O clock
|
||||
input rx_lclk_div4; // slow clock
|
||||
input rx_ref_clk; // idelay reference clock
|
||||
output rx_lclk_pll; // clock output for pll
|
||||
|
||||
//##########################
|
||||
@ -51,14 +54,15 @@ module erx_io (/*AUTOARG*/
|
||||
wire access_wide;
|
||||
reg valid_packet;
|
||||
wire [15:0] rx_word;
|
||||
wire rx_ref_clk_idlyctrl;
|
||||
|
||||
reg [15:0] rx_word_sync;
|
||||
|
||||
//############
|
||||
//# REGS
|
||||
//############
|
||||
reg [7:0] data_even_reg;
|
||||
reg [7:0] data_odd_reg;
|
||||
wire rx_frame;
|
||||
wire [1:0] rx_frame;
|
||||
reg [1:0] rx_frame_sync;
|
||||
wire rx_frame_old;
|
||||
reg [111:0] rx_sample;
|
||||
reg [6:0] rx_pointer;
|
||||
@ -71,54 +75,67 @@ module erx_io (/*AUTOARG*/
|
||||
wire rx_lclk_iddr;
|
||||
wire [8:0] rxi_delay_in;
|
||||
wire [8:0] rxi_delay_out;
|
||||
reg reset_sync;
|
||||
|
||||
//Reset sync
|
||||
always @ (posedge rx_lclk)
|
||||
reset_sync <= reset;
|
||||
|
||||
//#####################
|
||||
//#CREATE 112 BIT PACKET
|
||||
//#####################
|
||||
|
||||
//TODO: clean up!
|
||||
//write Pointer
|
||||
always @ (posedge rx_lclk)
|
||||
if (~rx_frame)
|
||||
rx_pointer[6:0] <= 7'b0000001; //new frame
|
||||
else if (rx_pointer[6])
|
||||
rx_pointer[6:0] <= 7'b0001000; //anticipate burst
|
||||
else if(rx_frame)
|
||||
rx_pointer[6:0] <= {rx_pointer[5:0],1'b0};//middle of frame
|
||||
|
||||
//convert to 112 bit packet
|
||||
always @ (posedge rx_lclk)
|
||||
if(rx_frame)
|
||||
if (~rx_frame_sync[1]) begin
|
||||
rx_pointer <= 3'b0; //new frame
|
||||
access <= 1'b0;
|
||||
end
|
||||
else if (rx_pointer != 3'd6 && (rx_frame_sync != 2'b00))
|
||||
begin
|
||||
if(rx_pointer[0])
|
||||
rx_sample[15:0] <= rx_word[15:0];
|
||||
if(rx_pointer[1])
|
||||
rx_sample[31:16] <= rx_word[15:0];
|
||||
if(rx_pointer[2])
|
||||
rx_sample[47:32] <= rx_word[15:0];
|
||||
if(rx_pointer[3])
|
||||
rx_sample[63:48] <= rx_word[15:0];
|
||||
if(rx_pointer[4])
|
||||
rx_sample[79:64] <= rx_word[15:0];
|
||||
if(rx_pointer[5])
|
||||
rx_sample[95:80] <= rx_word[15:0];
|
||||
if(rx_pointer[6])
|
||||
rx_sample[111:96] <= rx_word[15:0];
|
||||
rx_pointer <= rx_pointer + 1; //anticipate burst
|
||||
access <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
rx_pointer <= 3'd3;//middle of frame
|
||||
access <= 1'b1;
|
||||
end
|
||||
|
||||
|
||||
// shift register for rx_word
|
||||
always @ (posedge rx_lclk)
|
||||
case (rx_frame_sync[1:0])
|
||||
2'b01 : begin
|
||||
rx_sample[111:8] <= rx_sample[103:0];
|
||||
rx_sample[7:0] <= rx_word_sync[7:0];
|
||||
end
|
||||
2'b10 : begin
|
||||
rx_sample[111:8] <= rx_sample[103:0];
|
||||
rx_sample[7:0] <= rx_word_sync[15:8];
|
||||
end
|
||||
2'b11 : begin
|
||||
rx_sample[111:16] <= rx_sample[95:0];
|
||||
rx_sample[15:0] <= rx_word_sync[15:0];
|
||||
end
|
||||
default :
|
||||
rx_sample <= rx_sample;
|
||||
endcase // case (rx_frame_sync[1:0])
|
||||
|
||||
|
||||
//#####################
|
||||
//#DATA VALID SIGNAL
|
||||
//####################
|
||||
|
||||
always @ (posedge rx_lclk)
|
||||
begin
|
||||
access <= rx_pointer[6];
|
||||
valid_packet <= access;//data pipeline
|
||||
end
|
||||
|
||||
reg burst_detect;
|
||||
always @ (posedge rx_lclk)
|
||||
if(access & rx_frame)
|
||||
if(access & rx_frame_sync[1])
|
||||
burst_detect <= 1'b1;
|
||||
else if(~rx_frame)
|
||||
else if(~rx_frame_sync)
|
||||
burst_detect <= 1'b0;
|
||||
|
||||
//###################################
|
||||
@ -131,44 +148,42 @@ module erx_io (/*AUTOARG*/
|
||||
begin
|
||||
//pipelin burst (delay by one frame)
|
||||
burst <= burst_detect;
|
||||
|
||||
//access
|
||||
rx_packet_lclk[0] <= rx_sample[40];
|
||||
rx_packet_lclk[0] <= rx_sample[64];
|
||||
|
||||
//write
|
||||
rx_packet_lclk[1] <= rx_sample[41];
|
||||
rx_packet_lclk[1] <= rx_sample[65];
|
||||
|
||||
//datamode
|
||||
rx_packet_lclk[3:2] <= rx_sample[43:42];
|
||||
rx_packet_lclk[3:2] <= rx_sample[67:66];
|
||||
|
||||
//ctrlmode
|
||||
rx_packet_lclk[7:4] <= rx_sample[15:12];
|
||||
rx_packet_lclk[7:4] <= rx_sample[103:100];
|
||||
|
||||
//dstaddr
|
||||
rx_packet_lclk[39:8] <= {rx_sample[11:8],
|
||||
rx_sample[23:16],
|
||||
rx_sample[31:24],
|
||||
rx_sample[39:32],
|
||||
rx_sample[47:44]};
|
||||
rx_packet_lclk[39:8] <= rx_sample[99:68];
|
||||
|
||||
//data
|
||||
rx_packet_lclk[71:40] <= {rx_sample[55:48],
|
||||
rx_sample[63:56],
|
||||
rx_sample[71:64],
|
||||
rx_sample[79:72]};
|
||||
rx_packet_lclk[71:40] <= rx_sample[63:32];
|
||||
|
||||
//srcaddr
|
||||
rx_packet_lclk[103:72]<= {rx_sample[87:80],
|
||||
rx_sample[95:88],
|
||||
rx_sample[103:96],
|
||||
rx_sample[111:104]
|
||||
};
|
||||
end
|
||||
rx_packet_lclk[103:72]<= rx_sample[31:0];
|
||||
end
|
||||
|
||||
//###################################
|
||||
//#SYNCHRONIZE TO SLOW CLK
|
||||
//###################################
|
||||
|
||||
//stretch access pulse to 4 cycles
|
||||
pulse_stretcher #(.DW(3)) ps0 (.out (access_wide),
|
||||
.in (valid_packet),
|
||||
.clk (rx_lclk),
|
||||
.reset (reset)
|
||||
);
|
||||
pulse_stretcher #(.DW(3))
|
||||
ps0 (
|
||||
.out(access_wide),
|
||||
.in(valid_packet),
|
||||
.clk(rx_lclk),
|
||||
.reset(reset_sync));
|
||||
|
||||
|
||||
always @ (posedge rx_lclk_div4)
|
||||
rx_access <= access_wide;
|
||||
|
||||
@ -236,7 +251,7 @@ module erx_io (/*AUTOARG*/
|
||||
//#RX CLOCK
|
||||
//###################################
|
||||
|
||||
BUFG bufg_lclk (.I(rxi_lclk), .O(rx_lclk_pll));
|
||||
assign rx_lclk_pll = rxi_lclk;
|
||||
|
||||
//###################################
|
||||
//#IDELAY CIRCUIT
|
||||
@ -244,22 +259,15 @@ module erx_io (/*AUTOARG*/
|
||||
|
||||
assign rxi_delay_in[8:0] ={rxi_frame,rxi_data[7:0]};
|
||||
|
||||
BUFG bufg_rx_ref_clk( .I(rx_ref_clk), .O(rx_ref_clk_idlyctrl));
|
||||
|
||||
//Do these need parameters?
|
||||
IDELAYCTRL idelayctrl_inst (.RDY(),
|
||||
.REFCLK(rx_ref_clk_idlyctrl),//200MHz clk (78ps tap delay)
|
||||
.RST(1'b0)
|
||||
);
|
||||
|
||||
genvar j;
|
||||
generate for(j=0; j<9; j=j+1)
|
||||
begin : gen_idelay
|
||||
begin : gen_idelay
|
||||
(* IODELAY_GROUP = "IDELAY_GROUP" *) // Group name for IDELAYCTRL
|
||||
IDELAYE2 #(.CINVCTRL_SEL("FALSE"),
|
||||
.DELAY_SRC("IDATAIN"),
|
||||
.HIGH_PERFORMANCE_MODE("FALSE"),
|
||||
.IDELAY_TYPE("FIXED"),
|
||||
.IDELAY_VALUE(14),
|
||||
.IDELAY_VALUE(RX_TAP_DELAY[j]),
|
||||
.PIPE_SEL("FALSE"),
|
||||
.REFCLK_FREQUENCY(200.0),
|
||||
.SIGNAL_PATTERN("DATA"))
|
||||
@ -283,36 +291,44 @@ module erx_io (/*AUTOARG*/
|
||||
//#############################
|
||||
//# IDDR SAMPLERS
|
||||
//#############################
|
||||
BUFIO bufio_lclk (.I(rxi_lclk),
|
||||
.O(rx_lclk_iddr));
|
||||
|
||||
//DATA
|
||||
genvar i;
|
||||
generate for(i=0; i<8; i=i+1)
|
||||
begin : gen_iddr
|
||||
IDDR #(.DDR_CLK_EDGE ("SAME_EDGE_PIPELINED"))
|
||||
IDDR #(.DDR_CLK_EDGE ("SAME_EDGE"), .SRTYPE("ASYNC"))
|
||||
iddr_data (
|
||||
.Q1 (rx_word[i]),
|
||||
.Q2 (rx_word[i+8]),
|
||||
.C (rx_lclk_iddr),
|
||||
.C (rx_lclk),
|
||||
.CE (1'b1),
|
||||
.D (rxi_delay_out[i]),
|
||||
.R (reset),
|
||||
.R (reset_sync),
|
||||
.S (1'b0)
|
||||
);
|
||||
end
|
||||
endgenerate
|
||||
|
||||
//FRAME
|
||||
IDDR #(.DDR_CLK_EDGE ("SAME_EDGE_PIPELINED"))
|
||||
IDDR #(.DDR_CLK_EDGE ("SAME_EDGE"), .SRTYPE("ASYNC"))
|
||||
iddr_frame (
|
||||
.Q1 (),
|
||||
.Q2 (rx_frame),
|
||||
.C (rx_lclk_iddr),
|
||||
.Q1 (rx_frame[0]),
|
||||
.Q2 (rx_frame[1]),
|
||||
.C (rx_lclk),
|
||||
.CE (1'b1),
|
||||
.D (rxi_delay_out[8]),
|
||||
.R (reset),
|
||||
.R (reset_sync),
|
||||
.S (1'b0)
|
||||
);
|
||||
);
|
||||
|
||||
//Pipe stage
|
||||
always @ (posedge rx_lclk)
|
||||
rx_frame_sync <= rx_frame;
|
||||
|
||||
//Pipe stage
|
||||
always @ (posedge rx_lclk)
|
||||
rx_word_sync <= rx_word;
|
||||
|
||||
|
||||
endmodule // erx_io
|
||||
// Local Variables:
|
||||
|
@ -1,4 +1,4 @@
|
||||
set oh_path "../.."
|
||||
set oh_path "../../../.."
|
||||
# Set the reference directory for source file relative paths (by default the value is script directory path)
|
||||
set origin_dir "."
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:component xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>patrik</spirit:vendor>
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>axi_elink</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
@ -737,8 +737,8 @@
|
||||
</spirit:busInterface>
|
||||
<spirit:busInterface>
|
||||
<spirit:name>tx</spirit:name>
|
||||
<spirit:busType spirit:vendor="patrik" spirit:library="user" spirit:name="tx" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="patrik" spirit:library="user" spirit:name="tx_rtl" spirit:version="1.0"/>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="tx" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="Adapteva" spirit:library="user" spirit:name="tx_rtl" spirit:version="1.0"/>
|
||||
<spirit:master/>
|
||||
<spirit:portMaps>
|
||||
<spirit:portMap>
|
||||
@ -825,8 +825,8 @@
|
||||
</spirit:busInterface>
|
||||
<spirit:busInterface>
|
||||
<spirit:name>rx</spirit:name>
|
||||
<spirit:busType spirit:vendor="patrik" spirit:library="user" spirit:name="rx" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="patrik" spirit:library="user" spirit:name="rx_rtl" spirit:version="1.0"/>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="rx" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="Adapteva" spirit:library="user" spirit:name="rx_rtl" spirit:version="1.0"/>
|
||||
<spirit:slave/>
|
||||
<spirit:portMaps>
|
||||
<spirit:portMap>
|
||||
@ -913,8 +913,8 @@
|
||||
</spirit:busInterface>
|
||||
<spirit:busInterface>
|
||||
<spirit:name>e_cclk</spirit:name>
|
||||
<spirit:busType spirit:vendor="patrik" spirit:library="user" spirit:name="e_cclk" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="patrik" spirit:library="user" spirit:name="e_cclk_rtl" spirit:version="1.0"/>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="e_cclk" spirit:version="1.0"/>
|
||||
<spirit:abstractionType spirit:vendor="Adapteva" spirit:library="user" spirit:name="e_cclk_rtl" spirit:version="1.0"/>
|
||||
<spirit:master/>
|
||||
<spirit:portMaps>
|
||||
<spirit:portMap>
|
||||
@ -971,7 +971,7 @@
|
||||
<spirit:parameters>
|
||||
<spirit:parameter>
|
||||
<spirit:name>viewChecksum</spirit:name>
|
||||
<spirit:value>ecc7b153</spirit:value>
|
||||
<spirit:value>17fb0d8a</spirit:value>
|
||||
</spirit:parameter>
|
||||
</spirit:parameters>
|
||||
</spirit:view>
|
||||
@ -989,7 +989,7 @@
|
||||
<spirit:parameters>
|
||||
<spirit:parameter>
|
||||
<spirit:name>viewChecksum</spirit:name>
|
||||
<spirit:value>ecc7b153</spirit:value>
|
||||
<spirit:value>17fb0d8a</spirit:value>
|
||||
</spirit:parameter>
|
||||
</spirit:parameters>
|
||||
</spirit:view>
|
||||
@ -2780,163 +2780,171 @@
|
||||
<spirit:fileSet>
|
||||
<spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name>
|
||||
<spirit:file>
|
||||
<spirit:name>../../xilibs/ip/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink_constants.v</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../../../elink/hdl/elink_constants.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_async.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_async.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/memory_dp.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/memory_dp.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emesh/hdl/packet2emesh.v</spirit:name>
|
||||
<spirit:name>../../../../emesh/hdl/packet2emesh.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emesh/hdl/emesh2packet.v</spirit:name>
|
||||
<spirit:name>../../../../emesh/hdl/emesh2packet.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/arbiter_priority.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/arbiter_priority.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/synchronizer.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/synchronizer.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emmu/hdl/emmu.v</spirit:name>
|
||||
<spirit:name>../../../../emmu/hdl/emmu.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_cdc.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_cdc.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink_regmap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/elink_regmap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emailbox/hdl/emailbox.v</spirit:name>
|
||||
<spirit:name>../../../../emailbox/hdl/emailbox.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../edma/hdl/edma.v</spirit:name>
|
||||
<spirit:name>../../../../edma/hdl/edma.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_arbiter.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_arbiter.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/pulse_stretcher.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/pulse_stretcher.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_protocol.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_protocol.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ecfg_if.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ecfg_if.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_remap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_remap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_protocol.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_protocol.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_arbiter.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_arbiter.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_cfg.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_cfg.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_cfg.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_cfg.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_remap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_remap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_io.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_io.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_io.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_io.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_fifo.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_fifo.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_core.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_core.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_core.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_core.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_fifo.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_fifo.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ecfg_elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ecfg_elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ereset.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ereset.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_sync.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_sync.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/emaxi.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/emaxi.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/esaxi.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/esaxi.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/eclocks.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/eclocks.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/axi_elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/axi_elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../xilibs/ip/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
</spirit:fileSet>
|
||||
@ -2953,163 +2961,171 @@
|
||||
<spirit:fileSet>
|
||||
<spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name>
|
||||
<spirit:file>
|
||||
<spirit:name>../../xilibs/ip/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink_constants.v</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../../../elink/hdl/elink_constants.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_async.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_async.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/memory_dp.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/memory_dp.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emesh/hdl/packet2emesh.v</spirit:name>
|
||||
<spirit:name>../../../../emesh/hdl/packet2emesh.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emesh/hdl/emesh2packet.v</spirit:name>
|
||||
<spirit:name>../../../../emesh/hdl/emesh2packet.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/arbiter_priority.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/arbiter_priority.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/synchronizer.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/synchronizer.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emmu/hdl/emmu.v</spirit:name>
|
||||
<spirit:name>../../../../emmu/hdl/emmu.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_cdc.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_cdc.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink_regmap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/elink_regmap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../emailbox/hdl/emailbox.v</spirit:name>
|
||||
<spirit:name>../../../../emailbox/hdl/emailbox.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../edma/hdl/edma.v</spirit:name>
|
||||
<spirit:name>../../../../edma/hdl/edma.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_arbiter.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_arbiter.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../common/hdl/pulse_stretcher.v</spirit:name>
|
||||
<spirit:name>../../../../common/hdl/pulse_stretcher.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_protocol.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_protocol.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ecfg_if.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ecfg_if.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_remap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_remap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_protocol.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_protocol.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_arbiter.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_arbiter.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_cfg.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_cfg.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_cfg.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_cfg.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_remap.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_remap.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_io.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_io.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_io.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_io.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_fifo.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_fifo.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_core.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_core.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx_core.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx_core.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx_fifo.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx_fifo.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ecfg_elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ecfg_elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/etx.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/etx.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/ereset.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/ereset.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/erx.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/erx.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../memory/hdl/fifo_sync.v</spirit:name>
|
||||
<spirit:name>../../../../memory/hdl/fifo_sync.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/emaxi.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/emaxi.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/esaxi.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/esaxi.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/eclocks.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/eclocks.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../elink/hdl/axi_elink.v</spirit:name>
|
||||
<spirit:name>../../../../elink/hdl/axi_elink.v</spirit:name>
|
||||
<spirit:fileType>verilogSource</spirit:fileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../xilibs/ip/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
<spirit:file>
|
||||
<spirit:name>../../../../xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci</spirit:name>
|
||||
<spirit:userFileType>xci</spirit:userFileType>
|
||||
</spirit:file>
|
||||
</spirit:fileSet>
|
||||
@ -3184,10 +3200,10 @@
|
||||
<xilinx:taxonomy>/UserIP</xilinx:taxonomy>
|
||||
</xilinx:taxonomies>
|
||||
<xilinx:displayName>axi_elink_v1_0</xilinx:displayName>
|
||||
<xilinx:coreRevision>4</xilinx:coreRevision>
|
||||
<xilinx:coreCreationDateTime>2015-06-30T21:35:37Z</xilinx:coreCreationDateTime>
|
||||
<xilinx:coreRevision>6</xilinx:coreRevision>
|
||||
<xilinx:coreCreationDateTime>2015-08-20T14:23:21Z</xilinx:coreCreationDateTime>
|
||||
<xilinx:tags>
|
||||
<xilinx:tag xilinx:name="patrik:user:axi_elink:1.0_ARCHIVE_LOCATION">../../projects/axi_elink</xilinx:tag>
|
||||
<xilinx:tag xilinx:name="Adapteva:user:axi_elink:1.0_ARCHIVE_LOCATION">E:/projects/ephycard</xilinx:tag>
|
||||
</xilinx:tags>
|
||||
</xilinx:coreExtensions>
|
||||
<xilinx:packagingInfo>
|
||||
@ -3195,7 +3211,7 @@
|
||||
<xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="dcb5c217"/>
|
||||
<xilinx:checksum xilinx:scope="addressSpaces" xilinx:value="bfa0be72"/>
|
||||
<xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="78389c6b"/>
|
||||
<xilinx:checksum xilinx:scope="fileGroups" xilinx:value="4cada462"/>
|
||||
<xilinx:checksum xilinx:scope="fileGroups" xilinx:value="7baf097b"/>
|
||||
<xilinx:checksum xilinx:scope="ports" xilinx:value="b5e1b564"/>
|
||||
<xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="85f55a50"/>
|
||||
<xilinx:checksum xilinx:scope="parameters" xilinx:value="5cb816ef"/>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>patrik</spirit:vendor>
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>e_cclk</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>patrik</spirit:vendor>
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>e_cclk_rtl</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:busType spirit:vendor="patrik" spirit:library="user" spirit:name="e_cclk" spirit:version="1.0"/>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="e_cclk" spirit:version="1.0"/>
|
||||
<spirit:ports>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>e_cclk_p</spirit:logicalName>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>patrik</spirit:vendor>
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>e_cclk</spirit:name>
|
||||
<spirit:name>rx</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:directConnection>false</spirit:directConnection>
|
||||
<spirit:isAddressable>false</spirit:isAddressable>
|
170
elink/projects/xilinx/axi_elink/interfaces/rx_rtl.xml
Executable file
170
elink/projects/xilinx/axi_elink/interfaces/rx_rtl.xml
Executable file
@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>rx_rtl</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="rx" spirit:version="1.0"/>
|
||||
<spirit:ports>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_data_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_data_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_frame_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_frame_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_lclk_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxi_lclk_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxo_wr_wait_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxo_wr_wait_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxo_rd_wait_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>rxo_rd_wait_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
</spirit:ports>
|
||||
</spirit:abstractionDefinition>
|
11
elink/projects/xilinx/axi_elink/interfaces/tx.xml
Executable file
11
elink/projects/xilinx/axi_elink/interfaces/tx.xml
Executable file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:busDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>tx</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:directConnection>false</spirit:directConnection>
|
||||
<spirit:isAddressable>false</spirit:isAddressable>
|
||||
<spirit:maxMasters>1</spirit:maxMasters>
|
||||
<spirit:maxSlaves>1</spirit:maxSlaves>
|
||||
</spirit:busDefinition>
|
170
elink/projects/xilinx/axi_elink/interfaces/tx_rtl.xml
Executable file
170
elink/projects/xilinx/axi_elink/interfaces/tx_rtl.xml
Executable file
@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>Adapteva</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>tx_rtl</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:busType spirit:vendor="Adapteva" spirit:library="user" spirit:name="tx" spirit:version="1.0"/>
|
||||
<spirit:ports>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txi_rd_wait_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txi_wr_wait_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txi_wr_wait_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txi_rd_wait_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_data_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_data_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>8</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_frame_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_frame_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_lclk_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>txo_lclk_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
</spirit:ports>
|
||||
</spirit:abstractionDefinition>
|
115
elink/projects/xilinx/axi_elink/xgui/axi_elink_v1_0.tcl
Executable file
115
elink/projects/xilinx/axi_elink/xgui/axi_elink_v1_0.tcl
Executable file
@ -0,0 +1,115 @@
|
||||
# Definitional proc to organize widgets for parameters.
|
||||
proc init_gui { IPINST } {
|
||||
ipgui::add_param $IPINST -name "Component_Name"
|
||||
#Adding Page
|
||||
set Page_0 [ipgui::add_page $IPINST -name "Page 0"]
|
||||
ipgui::add_param $IPINST -name "AW" -parent ${Page_0}
|
||||
ipgui::add_param $IPINST -name "DW" -parent ${Page_0}
|
||||
ipgui::add_param $IPINST -name "ID" -parent ${Page_0}
|
||||
ipgui::add_param $IPINST -name "M_IDW" -parent ${Page_0}
|
||||
ipgui::add_param $IPINST -name "PW" -parent ${Page_0}
|
||||
ipgui::add_param $IPINST -name "S_IDW" -parent ${Page_0}
|
||||
|
||||
ipgui::add_param $IPINST -name "IOSTD_ELINK"
|
||||
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.AW { PARAM_VALUE.AW } {
|
||||
# Procedure called to update AW when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.AW { PARAM_VALUE.AW } {
|
||||
# Procedure called to validate AW
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.DW { PARAM_VALUE.DW } {
|
||||
# Procedure called to update DW when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.DW { PARAM_VALUE.DW } {
|
||||
# Procedure called to validate DW
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.ID { PARAM_VALUE.ID } {
|
||||
# Procedure called to update ID when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.ID { PARAM_VALUE.ID } {
|
||||
# Procedure called to validate ID
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.IOSTD_ELINK { PARAM_VALUE.IOSTD_ELINK } {
|
||||
# Procedure called to update IOSTD_ELINK when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.IOSTD_ELINK { PARAM_VALUE.IOSTD_ELINK } {
|
||||
# Procedure called to validate IOSTD_ELINK
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.M_IDW { PARAM_VALUE.M_IDW } {
|
||||
# Procedure called to update M_IDW when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.M_IDW { PARAM_VALUE.M_IDW } {
|
||||
# Procedure called to validate M_IDW
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.PW { PARAM_VALUE.PW } {
|
||||
# Procedure called to update PW when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.PW { PARAM_VALUE.PW } {
|
||||
# Procedure called to validate PW
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.S_IDW { PARAM_VALUE.S_IDW } {
|
||||
# Procedure called to update S_IDW when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.S_IDW { PARAM_VALUE.S_IDW } {
|
||||
# Procedure called to validate S_IDW
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
proc update_MODELPARAM_VALUE.AW { MODELPARAM_VALUE.AW PARAM_VALUE.AW } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.AW}] ${MODELPARAM_VALUE.AW}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.DW { MODELPARAM_VALUE.DW PARAM_VALUE.DW } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.DW}] ${MODELPARAM_VALUE.DW}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.PW { MODELPARAM_VALUE.PW PARAM_VALUE.PW } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.PW}] ${MODELPARAM_VALUE.PW}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.ID { MODELPARAM_VALUE.ID PARAM_VALUE.ID } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.ID}] ${MODELPARAM_VALUE.ID}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.M_IDW { MODELPARAM_VALUE.M_IDW PARAM_VALUE.M_IDW } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.M_IDW}] ${MODELPARAM_VALUE.M_IDW}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.S_IDW { MODELPARAM_VALUE.S_IDW PARAM_VALUE.S_IDW } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.S_IDW}] ${MODELPARAM_VALUE.S_IDW}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.IOSTD_ELINK { MODELPARAM_VALUE.IOSTD_ELINK PARAM_VALUE.IOSTD_ELINK } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.IOSTD_ELINK}] ${MODELPARAM_VALUE.IOSTD_ELINK}
|
||||
}
|
||||
|
@ -1,358 +0,0 @@
|
||||
set oh_path "../.."
|
||||
# Set the reference directory for source file relative paths (by default the value is script directory path)
|
||||
set origin_dir "."
|
||||
|
||||
# Set the directory path for the original project from where this script was exported
|
||||
set orig_proj_dir "[file normalize "$origin_dir"]"
|
||||
|
||||
# Create project
|
||||
create_project axi_elink_v1_0 .
|
||||
|
||||
# Set the directory path for the new project
|
||||
set proj_dir [get_property directory [current_project]]
|
||||
|
||||
# Set project properties
|
||||
set obj [get_projects axi_elink_v1_0]
|
||||
set_property "default_lib" "xil_defaultlib" $obj
|
||||
set_property "part" "xc7z030sbg485-1" $obj
|
||||
set_property "simulator_language" "Mixed" $obj
|
||||
|
||||
# Create 'sources_1' fileset (if not found)
|
||||
if {[string equal [get_filesets -quiet sources_1] ""]} {
|
||||
create_fileset -srcset sources_1
|
||||
}
|
||||
|
||||
# Set IP repository paths
|
||||
set obj [get_filesets sources_1]
|
||||
set_property "ip_repo_paths" "[file normalize "$origin_dir"] [file normalize "$origin_dir"]" $obj
|
||||
|
||||
# Rebuild user ip_repo's index before adding any source files
|
||||
update_ip_catalog -rebuild
|
||||
|
||||
# Set 'sources_1' fileset object
|
||||
set obj [get_filesets sources_1]
|
||||
set files [list \
|
||||
"[file normalize "$oh_path/xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci"]"\
|
||||
"[file normalize "$oh_path/xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci"]"\
|
||||
"[file normalize "$oh_path/memory/hdl/fifo_async.v"]"\
|
||||
"[file normalize "$oh_path/memory/hdl/memory_dp.v"]"\
|
||||
"[file normalize "$oh_path/emesh/hdl/packet2emesh.v"]"\
|
||||
"[file normalize "$oh_path/emesh/hdl/emesh2packet.v"]"\
|
||||
"[file normalize "$oh_path/common/hdl/arbiter_priority.v"]"\
|
||||
"[file normalize "$oh_path/common/hdl/synchronizer.v"]"\
|
||||
"[file normalize "$oh_path/emmu/hdl/emmu.v"]"\
|
||||
"[file normalize "$oh_path/memory/hdl/fifo_cdc.v"]"\
|
||||
"[file normalize "$oh_path/emailbox/hdl/emailbox.v"]"\
|
||||
"[file normalize "$oh_path/edma/hdl/edma.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/elink_regmap.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_arbiter.v"]"\
|
||||
"[file normalize "$oh_path/common/hdl/pulse_stretcher.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_protocol.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/ecfg_if.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_remap.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/elink_constants.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_protocol.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_arbiter.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_cfg.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_cfg.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_remap.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_io.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_io.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_fifo.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_core.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx_core.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx_fifo.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/ecfg_elink.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/etx.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/ereset.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/erx.v"]"\
|
||||
"[file normalize "$oh_path/memory/hdl/fifo_sync.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/elink.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/emaxi.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/esaxi.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/eclocks.v"]"\
|
||||
"[file normalize "$oh_path/elink/hdl/axi_elink.v"]"\
|
||||
"[file normalize "$origin_dir/component.xml"]"\
|
||||
]
|
||||
add_files -norecurse -fileset $obj $files
|
||||
|
||||
# Set 'sources_1' fileset file properties for remote files
|
||||
set file "$oh_path/xilibs/ip/fifo_async_104x16/fifo_async_104x16.xci"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
if { ![get_property "is_locked" $file_obj] } {
|
||||
set_property "synth_checkpoint_mode" "Singular" $file_obj
|
||||
}
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
# Set 'sources_1' fileset file properties for remote files
|
||||
set file "$oh_path/xilibs/ip/fifo_async_104x32/fifo_async_104x32.xci"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
if { ![get_property "is_locked" $file_obj] } {
|
||||
set_property "synth_checkpoint_mode" "Singular" $file_obj
|
||||
}
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
|
||||
|
||||
set file "$oh_path/memory/hdl/fifo_async.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/memory/hdl/memory_dp.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/emesh/hdl/packet2emesh.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/emesh/hdl/emesh2packet.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/common/hdl/arbiter_priority.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/common/hdl/synchronizer.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/emmu/hdl/emmu.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/memory/hdl/fifo_cdc.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/emailbox/hdl/emailbox.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/edma/hdl/edma.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/elink_regmap.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_arbiter.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/common/hdl/pulse_stretcher.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_protocol.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/ecfg_if.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_remap.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/elink_constants.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_protocol.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_arbiter.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_cfg.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_cfg.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_remap.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_io.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_io.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_fifo.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_core.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx_core.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx_fifo.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/ecfg_elink.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/etx.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/ereset.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/erx.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/memory/hdl/fifo_sync.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/elink.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/emaxi.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/esaxi.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/eclocks.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$oh_path/elink/hdl/axi_elink.v"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "used_in_implementation" "0" $file_obj
|
||||
|
||||
set file "$origin_dir/component.xml"
|
||||
set file [file normalize $file]
|
||||
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
|
||||
set_property "file_type" "IP-XACT" $file_obj
|
||||
|
||||
|
||||
# Set 'sources_1' fileset file properties for local files
|
||||
# None
|
||||
|
||||
# Set 'sources_1' fileset properties
|
||||
set obj [get_filesets sources_1]
|
||||
set_property "top" "axi_elink" $obj
|
||||
|
||||
# Create 'constrs_1' fileset (if not found)
|
||||
if {[string equal [get_filesets -quiet constrs_1] ""]} {
|
||||
create_fileset -constrset constrs_1
|
||||
}
|
||||
|
||||
# Set 'constrs_1' fileset object
|
||||
set obj [get_filesets constrs_1]
|
||||
|
||||
# Empty (no sources present)
|
||||
|
||||
# Set 'constrs_1' fileset properties
|
||||
set obj [get_filesets constrs_1]
|
||||
|
||||
# Create 'sim_1' fileset (if not found)
|
||||
if {[string equal [get_filesets -quiet sim_1] ""]} {
|
||||
create_fileset -simset sim_1
|
||||
}
|
||||
|
||||
# Set 'sim_1' fileset object
|
||||
set obj [get_filesets sim_1]
|
||||
# Empty (no sources present)
|
||||
|
||||
# Set 'sim_1' fileset properties
|
||||
set obj [get_filesets sim_1]
|
||||
set_property "top" "axi_elink" $obj
|
||||
set_property "xelab.nosort" "1" $obj
|
||||
set_property "xelab.unifast" "" $obj
|
||||
|
||||
# Create 'synth_1' run (if not found)
|
||||
if {[string equal [get_runs -quiet synth_1] ""]} {
|
||||
create_run -name synth_1 -part xc7z030sbg485-1 -flow {Vivado Synthesis 2015} -strategy "Vivado Synthesis Defaults" -constrset constrs_1
|
||||
} else {
|
||||
set_property strategy "Vivado Synthesis Defaults" [get_runs synth_1]
|
||||
set_property flow "Vivado Synthesis 2015" [get_runs synth_1]
|
||||
}
|
||||
set obj [get_runs synth_1]
|
||||
set_property "part" "xc7z030sbg485-1" $obj
|
||||
|
||||
# set the current synth run
|
||||
current_run -synthesis [get_runs synth_1]
|
||||
|
||||
# Create 'impl_1' run (if not found)
|
||||
if {[string equal [get_runs -quiet impl_1] ""]} {
|
||||
create_run -name impl_1 -part xc7z030sbg485-1 -flow {Vivado Implementation 2015} -strategy "Vivado Implementation Defaults" -constrset constrs_1 -parent_run synth_1
|
||||
} else {
|
||||
set_property strategy "Vivado Implementation Defaults" [get_runs impl_1]
|
||||
set_property flow "Vivado Implementation 2015" [get_runs impl_1]
|
||||
}
|
||||
set obj [get_runs impl_1]
|
||||
set_property "part" "xc7z030sbg485-1" $obj
|
||||
set_property "steps.write_bitstream.args.readback_file" "0" $obj
|
||||
set_property "steps.write_bitstream.args.verbose" "0" $obj
|
||||
|
||||
# set the current impl run
|
||||
current_run -implementation [get_runs impl_1]
|
||||
|
||||
puts "INFO: Project created:axi_elink_v1_0_project"
|
File diff suppressed because it is too large
Load Diff
@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spirit:abstractionDefinition xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<spirit:vendor>patrik</spirit:vendor>
|
||||
<spirit:library>user</spirit:library>
|
||||
<spirit:name>e_cclk_rtl</spirit:name>
|
||||
<spirit:version>1.0</spirit:version>
|
||||
<spirit:busType spirit:vendor="patrik" spirit:library="user" spirit:name="e_cclk" spirit:version="1.0"/>
|
||||
<spirit:ports>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>e_cclk_p</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
<spirit:port>
|
||||
<spirit:logicalName>e_cclk_n</spirit:logicalName>
|
||||
<spirit:description/>
|
||||
<spirit:wire>
|
||||
<spirit:onMaster>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>out</spirit:direction>
|
||||
</spirit:onMaster>
|
||||
<spirit:onSlave>
|
||||
<spirit:presence>required</spirit:presence>
|
||||
<spirit:width>1</spirit:width>
|
||||
<spirit:direction>in</spirit:direction>
|
||||
</spirit:onSlave>
|
||||
</spirit:wire>
|
||||
</spirit:port>
|
||||
</spirit:ports>
|
||||
</spirit:abstractionDefinition>
|
Loading…
x
Reference in New Issue
Block a user