OpenCores
URL https://opencores.org/ocsvn/pci/pci/trunk

Subversion Repositories pci

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 58 to Rev 59
    Reverse comparison

Rev 58 → Rev 59

/trunk/rtl/verilog/fifo_control.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.5 2002/09/25 15:53:52 mihad
// Removed all logic from asynchronous reset network
//
// Revision 1.4 2002/03/05 11:53:47 mihad
// Added some testcases, removed un-needed fifo signals
//
135,14 → 138,14
wire [(ADDR_LENGTH - 2):0] calc_rgrey_next = raddr[(ADDR_LENGTH - 1):1] ^ raddr[(ADDR_LENGTH - 2):0] ;
 
// FFs for registered empty and full flags
reg empty ;
reg full ;
wire empty ;
wire full ;
 
// almost_empty tag
reg almost_empty ;
wire almost_empty ;
 
// write allow wire - writes are allowed when fifo is not full
wire wallow = wenable_in && ~full ;
wire wallow = wenable_in && !full ;
 
// write allow output assignment
assign wallow_out = wallow ;
165,26 → 168,32
wclock_nempty_detect <= #`FF_DELAY (rgrey_addr != wgrey_addr) ;
end
 
reg stretched_empty ;
always@(posedge rclock_in or posedge clear)
begin
if(clear)
stretched_empty <= #`FF_DELAY 1'b1 ;
else
stretched_empty <= #`FF_DELAY empty && ~wclock_nempty_detect ;
end
wire stretched_empty ;
 
wire stretched_empty_flop_i = empty && !wclock_nempty_detect ;
 
meta_flop #(1) i_meta_flop_stretched_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (stretched_empty_flop_i),
.meta_q_o (stretched_empty)
) ;
 
// empty output is actual empty + 1 read clock cycle ( stretched empty )
assign empty_out = empty || stretched_empty ;
 
//rallow generation
assign rallow = renable_in && ~empty && ~stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
assign rallow = renable_in && !empty && !stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
 
// rallow output assignment
assign rallow_out = rallow ;
 
// almost empty output assignment
assign almost_empty_out = almost_empty && ~empty && ~stretched_empty ;
assign almost_empty_out = almost_empty && !empty && !stretched_empty ;
 
// at any clock edge that rallow is high, this register provides next read address, so wait cycles are not necessary
// when FIFO is empty, this register provides actual read address, so first location can be read
333,13 → 342,16
//combinatorial input to Registered full FlipFlop
wire reg_full = (wallow && comb_almost_full) || (comb_full) ;
 
always@(posedge wclock_in or posedge clear)
begin
if (clear)
full <= #`FF_DELAY 1'b0 ;
else
full <= #`FF_DELAY reg_full ;
end
meta_flop #(0) i_meta_flop_full
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_full),
.meta_q_o (full)
) ;
 
/*------------------------------------------------------------------------------------------------------------------------------
Registered empty control:
357,26 → 369,30
// combinatorial input for registered emty FlipFlop
wire reg_empty = (rallow && comb_almost_empty) || comb_empty ;
 
always@(posedge rclock_in or posedge clear)
begin
if (clear)
empty <= #`FF_DELAY 1'b1 ;
else if (flush_in)
empty <= #`FF_DELAY 1'b1 ;
else
empty <= #`FF_DELAY reg_empty ;
end
// meta flop for empty signal instantiation - reset value 1, load value (flush) 1 etc..
meta_flop #(1) i_meta_flop_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (flush_in),
.ld_val_i (1'b1),
.en_i (1'b1),
.d_i (reg_empty),
.meta_q_o (empty)
) ;
 
// input for almost empty flip flop
wire reg_almost_empty = rallow && comb_two_used || comb_almost_empty ;
always@(posedge clear or posedge rclock_in)
begin
if (clear)
almost_empty <= #`FF_DELAY 1'b0 ;
else if (flush_in)
almost_empty <= #`FF_DELAY 1'b0 ;
else
almost_empty <= #`FF_DELAY reg_almost_empty ;
end
 
meta_flop #(0) i_meta_flop_almost_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (flush_in),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_almost_empty),
.meta_q_o (almost_empty)
) ;
 
endmodule
/trunk/rtl/verilog/wbr_fifo_control.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.4 2002/09/25 15:53:52 mihad
// Removed all logic from asynchronous reset network
//
// Revision 1.3 2002/02/01 15:25:13 mihad
// Repaired a few bugs, updated specification, added test bench files and design document
//
122,7 → 125,7
wire [(ADDR_LENGTH - 2):0] calc_rgrey_next = raddr[(ADDR_LENGTH - 1):1] ^ raddr[(ADDR_LENGTH - 2):0] ;
 
// FF for registered empty flag
reg empty ;
wire empty ;
 
// write allow wire
wire wallow = wenable_in ;
146,20 → 149,26
end
 
// special synchronizing mechanism for different implementations - in synchronous imp., empty is prolonged for 1 clock edge if no write clock comes after initial write
reg stretched_empty ;
always@(posedge rclock_in or posedge clear)
begin
if(clear)
stretched_empty <= #`FF_DELAY 1'b1 ;
else
stretched_empty <= #`FF_DELAY empty && ~wclock_nempty_detect ;
end
wire stretched_empty ;
 
wire stretched_empty_flop_i = empty && !wclock_nempty_detect ;
 
meta_flop #(1) i_meta_flop_stretched_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (stretched_empty_flop_i),
.meta_q_o (stretched_empty)
) ;
 
// empty output is actual empty + 1 read clock cycle ( stretched empty )
assign empty_out = empty || stretched_empty ;
 
//rallow generation
assign rallow = renable_in && ~empty && ~stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
assign rallow = renable_in && !empty && !stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
 
// rallow output assignment
assign rallow_out = renable_in ;
278,14 → 287,15
// combinatorial input for registered emty FlipFlop
wire reg_empty = (rallow && (rgrey_next == wgrey_addr)) || (rgrey_addr == wgrey_addr) ;
 
always@(posedge rclock_in or posedge clear)
begin
if (clear)
empty <= #`FF_DELAY 1'b1 ;
else if (flush_in)
empty <= #1 1'b1 ; // when flushed, set empty to active
else
empty <= #`FF_DELAY reg_empty ;
end
meta_flop #(1) i_meta_flop_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (flush_in),
.ld_val_i (1'b1),
.en_i (1'b1),
.d_i (reg_empty),
.meta_q_o (empty)
) ;
 
endmodule
/trunk/rtl/verilog/wbw_wbr_fifos.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.4 2002/09/25 15:53:52 mihad
// Removed all logic from asynchronous reset network
//
// Revision 1.3 2002/02/01 15:25:14 mihad
// Repaired a few bugs, updated specification, added test bench files and design document
//
499,17 → 502,18
// synchronize transaction ready output to reading clock
// transaction ready is set when incoming transaction count is not equal to outgoing transaction count (what goes in must come out logic)
// transaction ready is cleared when whole transaction is pulled out of fifo (otherwise it could stay set for additional cycle and result in wrong op.)
reg wbw_transaction_ready_out ;
always@(posedge pci_clock_in or posedge wbw_clear)
begin
if (wbw_clear)
wbw_transaction_ready_out <= #`FF_DELAY 1'b0 ;
else
if ( out_count_en )
wbw_transaction_ready_out <= #`FF_DELAY 1'b0 ;
else
wbw_transaction_ready_out <= #`FF_DELAY inGreyCount != outGreyCount ;
end
wire wbw_transaction_ready_flop_i = inGreyCount != outGreyCount ;
 
meta_flop #(0) i_meta_flop_wbw_transaction_ready
(
.rst_i (wbw_clear),
.clk_i (pci_clock_in),
.ld_i (out_count_en),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (wbw_transaction_ready_flop_i),
.meta_q_o (wbw_transaction_ready_out)
) ;
 
endmodule
 
/trunk/rtl/verilog/pciw_pcir_fifos.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.5 2002/09/25 15:53:52 mihad
// Removed all logic from asynchronous reset network
//
// Revision 1.4 2002/03/05 11:53:47 mihad
// Added some testcases, removed un-needed fifo signals
//
527,18 → 530,19
// transaction is ready when incoming transaction count is not equal to outgoing transaction count ( what comes in must come out )
// anytime last entry of transaction is pulled out of fifo, transaction ready flag is cleared for at least one clock to prevent wrong operation
// ( otherwise transaction ready would stay set for one additional clock even though next transaction was not ready )
reg pciw_transaction_ready_out ;
always@(posedge wb_clock_in or posedge pciw_clear)
begin
if (pciw_clear)
pciw_transaction_ready_out <= #`FF_DELAY 1'b0 ;
else
if ( out_count_en )
pciw_transaction_ready_out <= #`FF_DELAY 1'b0 ;
else
pciw_transaction_ready_out <= #`FF_DELAY inGreyCount != outGreyCount ;
end
 
wire pciw_transaction_ready_flop_i = inGreyCount != outGreyCount ;
meta_flop #(0) i_meta_flop_transaction_ready
(
.rst_i (pciw_clear),
.clk_i (wb_clock_in),
.ld_i (out_count_en),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (pciw_transaction_ready_flop_i),
.meta_q_o (pciw_transaction_ready_out)
) ;
 
assign pcir_transaction_ready_out = 1'b0 ;
 
endmodule
/trunk/rtl/verilog/pciw_fifo_control.v
127,15 → 127,15
wire [(ADDR_LENGTH - 2):0] calc_rgrey_next = raddr[(ADDR_LENGTH - 1):1] ^ raddr[(ADDR_LENGTH - 2):0] ;
 
// FFs for registered empty and full flags
reg empty ;
reg full ;
wire empty ;
wire full ;
 
// registered almost_empty and almost_full flags
reg almost_empty ;
reg almost_full ;
wire almost_empty ;
wire almost_full ;
 
// write allow wire - writes are allowed when fifo is not full
wire wallow = wenable_in && ~full ;
wire wallow = wenable_in && !full ;
 
// write allow output assignment
assign wallow_out = wallow ;
147,7 → 147,7
assign full_out = full ;
 
// almost full output assignment
assign almost_full_out = almost_full && ~full ;
assign almost_full_out = almost_full && !full ;
 
// clear generation for FFs and registers
wire clear = reset_in /*|| flush_in*/ ; // flush not used for write fifo
161,26 → 161,32
wclock_nempty_detect <= #`FF_DELAY (rgrey_addr != wgrey_addr) ;
end
 
reg stretched_empty ;
always@(posedge rclock_in or posedge clear)
begin
if(clear)
stretched_empty <= #`FF_DELAY 1'b1 ;
else
stretched_empty <= #`FF_DELAY empty && ~wclock_nempty_detect ;
end
wire stretched_empty ;
 
wire stretched_empty_flop_i = empty && ~wclock_nempty_detect ;
 
meta_flop #(1) i_meta_flop_stretched_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (stretched_empty_flop_i),
.meta_q_o (stretched_empty)
) ;
 
// empty output is actual empty + 1 read clock cycle ( stretched empty )
assign empty_out = empty || stretched_empty ;
 
//rallow generation
assign rallow = renable_in && ~empty && ~stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
assign rallow = renable_in && !empty && !stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
 
// rallow output assignment
assign rallow_out = rallow ;
 
// almost empty output assignment
assign almost_empty_out = almost_empty && ~empty && ~stretched_empty ;
assign almost_empty_out = almost_empty && !empty && !stretched_empty ;
 
// at any clock edge that rallow is high, this register provides next read address, so wait cycles are not necessary
// when FIFO is empty, this register provides actual read address, so first location can be read
355,7 → 361,6
registered two left is set on rising edge of write clock when three locations are left in fifo and another is written to it.
it's kept high until something is read/written from/to fifo.
--------------------------------------------------------------------------------------------------------------------------------*/
reg two_left_out ;
wire comb_full = wgrey_next == rgrey_addr ;
wire comb_almost_full = wgrey_addr == rgrey_minus2 ;
wire comb_two_left = wgrey_next == rgrey_minus2 ;
364,34 → 369,43
//combinatorial input to Registered full FlipFlop
wire reg_full = (wallow && comb_almost_full) || (comb_full) ;
 
always@(posedge wclock_in or posedge clear)
begin
if (clear)
full <= #`FF_DELAY 1'b0 ;
else
full <= #`FF_DELAY reg_full ;
end
meta_flop #(0) i_meta_flop_full
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_full),
.meta_q_o (full)
) ;
 
// input for almost full flip flop
wire reg_almost_full_in = wallow && comb_two_left || comb_almost_full ;
 
always@(posedge clear or posedge wclock_in)
begin
if (clear)
almost_full <= #`FF_DELAY 1'b0 ;
else
almost_full <= #`FF_DELAY reg_almost_full_in ;
end
meta_flop #(0) i_meta_flop_almost_full
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_almost_full_in),
.meta_q_o (almost_full)
) ;
 
wire reg_two_left_in = wallow && comb_three_left || comb_two_left ;
 
always@(posedge clear or posedge wclock_in)
begin
if (clear)
two_left_out <= #`FF_DELAY 1'b0 ;
else
two_left_out <= #`FF_DELAY reg_two_left_in ;
end
meta_flop #(0) i_meta_flop_two_left
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_two_left_in),
.meta_q_o (two_left_out)
) ;
 
/*------------------------------------------------------------------------------------------------------------------------------
Registered empty control:
410,22 → 424,29
// combinatorial input for registered emty FlipFlop
wire reg_empty = (rallow && comb_almost_empty) || comb_empty ;
 
always@(posedge rclock_in or posedge clear)
begin
if (clear)
empty <= #`FF_DELAY 1'b1 ;
else
empty <= #`FF_DELAY reg_empty ;
end
meta_flop #(1) i_meta_flop_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_empty),
.meta_q_o (empty)
) ;
 
// input for almost empty flip flop
wire reg_almost_empty = rallow && comb_two_used || comb_almost_empty ;
always@(posedge clear or posedge rclock_in)
begin
if (clear)
almost_empty <= #`FF_DELAY 1'b0 ;
else
almost_empty <= #`FF_DELAY reg_almost_empty ;
end
 
meta_flop #(0) i_meta_flop_almost_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_almost_empty),
.meta_q_o (almost_empty)
) ;
 
endmodule
/trunk/rtl/verilog/wbw_fifo_control.v
42,6 → 42,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.4 2002/09/25 15:53:52 mihad
// Removed all logic from asynchronous reset network
//
// Revision 1.3 2002/02/01 15:25:14 mihad
// Repaired a few bugs, updated specification, added test bench files and design document
//
129,17 → 132,17
wire [(ADDR_LENGTH - 2):0] calc_rgrey_next = raddr[(ADDR_LENGTH - 1):1] ^ raddr[(ADDR_LENGTH - 2):0] ;
 
// FFs for registered empty and full flags
reg empty ;
reg full ;
wire empty ;
wire full ;
 
// almost_full tag
reg almost_full ;
wire almost_full ;
 
// write allow wire - writes are allowed when fifo is not full
wire wallow = wenable_in && ~full ;
wire wallow = wenable_in && !full ;
 
// write allow output assignment
assign wallow_out = wallow && ~full ;
assign wallow_out = wallow && !full ;
 
// read allow wire
wire rallow ;
148,7 → 151,7
assign full_out = full ;
 
// almost full output assignment
assign almost_full_out = almost_full && ~full ;
assign almost_full_out = almost_full && !full ;
 
// clear generation for FFs and registers
wire clear = reset_in /*|| flush_in*/ ; // flush not used
163,20 → 166,26
end
 
// special synchronizing mechanism for different implementations - in synchronous imp., empty is prolonged for 1 clock edge if no write clock comes after initial write
reg stretched_empty ;
always@(posedge rclock_in or posedge clear)
begin
if(clear)
stretched_empty <= #`FF_DELAY 1'b1 ;
else
stretched_empty <= #`FF_DELAY empty && ~wclock_nempty_detect ;
end
wire stretched_empty ;
 
wire stretched_empty_flop_i = empty && !wclock_nempty_detect ;
 
meta_flop #(1) i_meta_flop_stretched_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (stretched_empty_flop_i),
.meta_q_o (stretched_empty)
) ;
 
// empty output is actual empty + 1 read clock cycle ( stretched empty )
assign empty_out = empty || stretched_empty ;
 
//rallow generation
assign rallow = renable_in && ~empty && ~stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
assign rallow = renable_in && !empty && !stretched_empty ; // reads allowed if read enable is high and FIFO is not empty
 
// rallow output assignment
assign rallow_out = rallow ;
326,24 → 335,30
//combinatorial input to Registered full FlipFlop
wire reg_full = wallow && (wgrey_next == rgrey_minus1) || (wgrey_next == rgrey_addr) ;
 
always@(posedge wclock_in or posedge clear)
begin
if (clear)
full <= #`FF_DELAY 1'b0 ;
else
full <= #`FF_DELAY reg_full ;
end
meta_flop #(0) i_meta_flop_full
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_full),
.meta_q_o (full)
) ;
 
// input for almost full latch
wire reg_almost_full_in = wallow && (wgrey_next == rgrey_minus2) || (wgrey_next == rgrey_minus1) ;
 
always@(posedge clear or posedge wclock_in)
begin
if (clear)
almost_full <= #`FF_DELAY 1'b0 ;
else
almost_full <= #`FF_DELAY reg_almost_full_in ;
end
meta_flop #(0) i_meta_flop_almost_full
(
.rst_i (clear),
.clk_i (wclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_almost_full_in),
.meta_q_o (almost_full)
) ;
 
/*------------------------------------------------------------------------------------------------------------------------------
Registered empty control:
359,12 → 374,15
wire comb_empty = (rgrey_addr == wgrey_addr) ;
wire reg_empty = renable_in && comb_almost_empty || comb_empty ;
 
always@(posedge rclock_in or posedge clear)
begin
if (clear)
empty <= #`FF_DELAY 1'b1 ;
else
empty <= #`FF_DELAY reg_empty ;
end
meta_flop #(1) i_meta_flop_empty
(
.rst_i (clear),
.clk_i (rclock_in),
.ld_i (1'b0),
.ld_val_i (1'b0),
.en_i (1'b1),
.d_i (reg_empty),
.meta_q_o (empty)
) ;
 
endmodule
/trunk/rtl/verilog/meta_flop.v
0,0 → 1,81
//////////////////////////////////////////////////////////////////////
//// ////
//// File name "meta_flop.v" ////
//// ////
//// This file is part of the "PCI bridge" project ////
//// http://www.opencores.org/cores/pci/ ////
//// ////
//// Author(s): ////
//// - Miha Dolenc (mihad@opencores.org) ////
//// ////
//////////////////////////////////////////////////////////////////////
//// ////
//// Copyright (C) 2001 Miha Dolenc, mihad@opencores.org ////
//// ////
//// 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: not supported by cvs2svn $
//
 
// synopsys translate_off
`include "timescale.v"
// synopsys translate_on
 
// this module is just an ordinary flip-flop - used for identifying meta stable critical flip flops - similar to synchronizer flop
module meta_flop
(
rst_i,
clk_i,
ld_i,
ld_val_i,
en_i,
d_i,
meta_q_o
) ;
 
parameter p_reset_value = 0 ;
 
input rst_i,
clk_i,
ld_i,
ld_val_i,
en_i,
d_i ;
 
output meta_q_o ;
reg meta_q_o ;
 
always@(posedge rst_i or posedge clk_i)
begin
if (rst_i)
meta_q_o <= #1 p_reset_value ;
else if (ld_i)
meta_q_o <= #1 ld_val_i ;
else if (en_i)
meta_q_o <= #1 d_i ;
end
 
endmodule
/trunk/apps/crt/rtl/verilog/top.v
43,6 → 43,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.2 2002/02/01 15:24:46 mihad
// Repaired a few bugs, updated specification, added test bench files and design document
//
// Revision 1.1.1.1 2001/10/02 15:33:33 mihad
// New project directory structure
//
54,8 → 57,6
module TOP
(
CLK,
AD,
CBE,
RST,
INTA,
REQ,
69,6 → 70,42
PAR,
PERR,
SERR,
AD0,
AD1,
AD2,
AD3,
AD4,
AD5,
AD6,
AD7,
AD8,
AD9,
AD10,
AD11,
AD12,
AD13,
AD14,
AD15,
AD16,
AD17,
AD18,
AD19,
AD20,
AD21,
AD22,
AD23,
AD24,
AD25,
AD26,
AD27,
AD28,
AD29,
AD30,
AD31,
CBE0,
CBE1,
CBE2,
CBE3,
 
/* CLK_I,
RST_I,
105,13 → 142,62
CRT_CLK,
HSYNC,
VSYNC,
RGB,
 
RGB4,
RGB5,
RGB6,
RGB7,
RGB8,
RGB9,
RGB10,
RGB11,
RGB12,
RGB13,
RGB14,
RGB15,
LED
);
 
input CLK ;
inout [31:0] AD ;
inout [3:0] CBE ;
inout AD0,
AD1,
AD2,
AD3,
AD4,
AD5,
AD6,
AD7,
AD8,
AD9,
AD10,
AD11,
AD12,
AD13,
AD14,
AD15,
AD16,
AD17,
AD18,
AD19,
AD20,
AD21,
AD22,
AD23,
AD24,
AD25,
AD26,
AD27,
AD28,
AD29,
AD30,
AD31 ;
 
inout CBE0,
CBE1,
CBE2,
CBE3 ;
 
inout RST ;
inout INTA ;
output REQ ;
130,7 → 216,18
// CRT outputs
output HSYNC ;
output VSYNC ;
output [15:4] RGB ;
output RGB4,
RGB5,
RGB6,
RGB7,
RGB8,
RGB9,
RGB10,
RGB11,
RGB12,
RGB13,
RGB14,
RGB15 ;
output LED ;
 
// WISHBONE system signals
170,9 → 267,50
wire [31:0] AD_en ;
 
 
wire [31:0] AD_in = AD ;
wire [31:0] AD_in =
{
AD31,
AD30,
AD29,
AD28,
AD27,
AD26,
AD25,
AD24,
AD23,
AD22,
AD21,
AD20,
AD19,
AD18,
AD17,
AD16,
AD15,
AD14,
AD13,
AD12,
AD11,
AD10,
AD9,
AD8,
AD7,
AD6,
AD5,
AD4,
AD3,
AD2,
AD1,
AD0
} ;
 
wire [3:0] CBE_in = CBE ;
wire [3:0] CBE_in =
{
CBE3,
CBE2,
CBE1,
CBE0
} ;
 
wire [3:0] CBE_out ;
wire [3:0] CBE_en ;
 
318,43 → 456,43
);
 
// PCI IO buffers instantiation
bufif0 AD_buf0 ( AD[0], AD_out[0], AD_en[0]) ;
bufif0 AD_buf1 ( AD[1], AD_out[1], AD_en[1]) ;
bufif0 AD_buf2 ( AD[2], AD_out[2], AD_en[2]) ;
bufif0 AD_buf3 ( AD[3], AD_out[3], AD_en[3]) ;
bufif0 AD_buf4 ( AD[4], AD_out[4], AD_en[4]) ;
bufif0 AD_buf5 ( AD[5], AD_out[5], AD_en[5]) ;
bufif0 AD_buf6 ( AD[6], AD_out[6], AD_en[6]) ;
bufif0 AD_buf7 ( AD[7], AD_out[7], AD_en[7]) ;
bufif0 AD_buf8 ( AD[8], AD_out[8], AD_en[8]) ;
bufif0 AD_buf9 ( AD[9], AD_out[9], AD_en[9]) ;
bufif0 AD_buf10 ( AD[10], AD_out[10],AD_en[10] ) ;
bufif0 AD_buf11 ( AD[11], AD_out[11],AD_en[11] ) ;
bufif0 AD_buf12 ( AD[12], AD_out[12],AD_en[12] ) ;
bufif0 AD_buf13 ( AD[13], AD_out[13],AD_en[13] ) ;
bufif0 AD_buf14 ( AD[14], AD_out[14],AD_en[14] ) ;
bufif0 AD_buf15 ( AD[15], AD_out[15],AD_en[15] ) ;
bufif0 AD_buf16 ( AD[16], AD_out[16],AD_en[16] ) ;
bufif0 AD_buf17 ( AD[17], AD_out[17],AD_en[17] ) ;
bufif0 AD_buf18 ( AD[18], AD_out[18],AD_en[18] ) ;
bufif0 AD_buf19 ( AD[19], AD_out[19],AD_en[19] ) ;
bufif0 AD_buf20 ( AD[20], AD_out[20],AD_en[20] ) ;
bufif0 AD_buf21 ( AD[21], AD_out[21],AD_en[21] ) ;
bufif0 AD_buf22 ( AD[22], AD_out[22],AD_en[22] ) ;
bufif0 AD_buf23 ( AD[23], AD_out[23],AD_en[23] ) ;
bufif0 AD_buf24 ( AD[24], AD_out[24],AD_en[24] ) ;
bufif0 AD_buf25 ( AD[25], AD_out[25],AD_en[25] ) ;
bufif0 AD_buf26 ( AD[26], AD_out[26],AD_en[26] ) ;
bufif0 AD_buf27 ( AD[27], AD_out[27],AD_en[27] ) ;
bufif0 AD_buf28 ( AD[28], AD_out[28],AD_en[28] ) ;
bufif0 AD_buf29 ( AD[29], AD_out[29],AD_en[29] ) ;
bufif0 AD_buf30 ( AD[30], AD_out[30],AD_en[30] ) ;
bufif0 AD_buf31 ( AD[31], AD_out[31],AD_en[31] ) ;
bufif0 AD_buf0 ( AD0, AD_out[0], AD_en[0]) ;
bufif0 AD_buf1 ( AD1, AD_out[1], AD_en[1]) ;
bufif0 AD_buf2 ( AD2, AD_out[2], AD_en[2]) ;
bufif0 AD_buf3 ( AD3, AD_out[3], AD_en[3]) ;
bufif0 AD_buf4 ( AD4, AD_out[4], AD_en[4]) ;
bufif0 AD_buf5 ( AD5, AD_out[5], AD_en[5]) ;
bufif0 AD_buf6 ( AD6, AD_out[6], AD_en[6]) ;
bufif0 AD_buf7 ( AD7, AD_out[7], AD_en[7]) ;
bufif0 AD_buf8 ( AD8, AD_out[8], AD_en[8]) ;
bufif0 AD_buf9 ( AD9, AD_out[9], AD_en[9]) ;
bufif0 AD_buf10 ( AD10, AD_out[10],AD_en[10] ) ;
bufif0 AD_buf11 ( AD11, AD_out[11],AD_en[11] ) ;
bufif0 AD_buf12 ( AD12, AD_out[12],AD_en[12] ) ;
bufif0 AD_buf13 ( AD13, AD_out[13],AD_en[13] ) ;
bufif0 AD_buf14 ( AD14, AD_out[14],AD_en[14] ) ;
bufif0 AD_buf15 ( AD15, AD_out[15],AD_en[15] ) ;
bufif0 AD_buf16 ( AD16, AD_out[16],AD_en[16] ) ;
bufif0 AD_buf17 ( AD17, AD_out[17],AD_en[17] ) ;
bufif0 AD_buf18 ( AD18, AD_out[18],AD_en[18] ) ;
bufif0 AD_buf19 ( AD19, AD_out[19],AD_en[19] ) ;
bufif0 AD_buf20 ( AD20, AD_out[20],AD_en[20] ) ;
bufif0 AD_buf21 ( AD21, AD_out[21],AD_en[21] ) ;
bufif0 AD_buf22 ( AD22, AD_out[22],AD_en[22] ) ;
bufif0 AD_buf23 ( AD23, AD_out[23],AD_en[23] ) ;
bufif0 AD_buf24 ( AD24, AD_out[24],AD_en[24] ) ;
bufif0 AD_buf25 ( AD25, AD_out[25],AD_en[25] ) ;
bufif0 AD_buf26 ( AD26, AD_out[26],AD_en[26] ) ;
bufif0 AD_buf27 ( AD27, AD_out[27],AD_en[27] ) ;
bufif0 AD_buf28 ( AD28, AD_out[28],AD_en[28] ) ;
bufif0 AD_buf29 ( AD29, AD_out[29],AD_en[29] ) ;
bufif0 AD_buf30 ( AD30, AD_out[30],AD_en[30] ) ;
bufif0 AD_buf31 ( AD31, AD_out[31],AD_en[31] ) ;
 
bufif0 CBE_buf0 ( CBE[0], CBE_out[0], CBE_en[0] ) ;
bufif0 CBE_buf1 ( CBE[1], CBE_out[1], CBE_en[1] ) ;
bufif0 CBE_buf2 ( CBE[2], CBE_out[2], CBE_en[2] ) ;
bufif0 CBE_buf3 ( CBE[3], CBE_out[3], CBE_en[3] ) ;
bufif0 CBE_buf0 ( CBE0, CBE_out[0], CBE_en[0] ) ;
bufif0 CBE_buf1 ( CBE1, CBE_out[1], CBE_en[1] ) ;
bufif0 CBE_buf2 ( CBE2, CBE_out[2], CBE_en[2] ) ;
bufif0 CBE_buf3 ( CBE3, CBE_out[3], CBE_en[3] ) ;
 
bufif0 FRAME_buf ( FRAME, FRAME_out, FRAME_en ) ;
bufif0 IRDY_buf ( IRDY, IRDY_out, IRDY_en ) ;
421,7 → 559,7
.rgb_in(rgb_int[15:4]),
.hsync_out(HSYNC),
.vsync_out(VSYNC),
.rgb_out(RGB)
.rgb_out({RGB15, RGB14, RGB13, RGB12, RGB11, RGB10, RGB9, RGB8, RGB7, RGB6, RGB5, RGB4})
) ;
 
endmodule
endmodule
/trunk/apps/crt/syn/ucf/pci_crt.ucf
299,92 → 299,94
# INST gbuf1 LOC=SSW
#
# #
 
NET "CLK" IOSTANDARD = PCI33_5 ;
NET "CLK" TNM_NET = "CLK";
NET "CRT_CLK" TNM_NET = "CRT_CLK";
 
TIMESPEC "TS_CLK" = PERIOD "CLK" 30 ns HIGH 50 %;
TIMESPEC "TS_CRT_CLK" = PERIOD "CRT_CLK" 44 ns HIGH 50 %;
TIMESPEC "TS_CLK_2_CRT_CLK" = FROM : "CLK" : TO : "CRT_CLK" : 30 ;
TIMESPEC "TS_CRT_CLK_2_CLK" = FROM : "CRT_CLK" : TO : "CLK" : 30 ;
TIMESPEC "TS_CLK_2_CRT_CLK" = FROM : "CLK" : TO : "CRT_CLK" : 5 ;
TIMESPEC "TS_CRT_CLK_2_CLK" = FROM : "CRT_CLK" : TO : "CLK" : 5 ;
 
INST "AD<0>.PAD" TNM = "PCI_AD";
INST "AD<1>.PAD" TNM = "PCI_AD";
INST "AD<2>.PAD" TNM = "PCI_AD";
INST "AD<3>.PAD" TNM = "PCI_AD";
INST "AD<4>.PAD" TNM = "PCI_AD";
INST "AD<5>.PAD" TNM = "PCI_AD";
INST "AD<6>.PAD" TNM = "PCI_AD";
INST "AD<7>.PAD" TNM = "PCI_AD";
INST "AD<8>.PAD" TNM = "PCI_AD";
INST "AD<9>.PAD" TNM = "PCI_AD";
INST "AD<10>.PAD" TNM = "PCI_AD";
INST "AD<11>.PAD" TNM = "PCI_AD";
INST "AD<12>.PAD" TNM = "PCI_AD";
INST "AD<13>.PAD" TNM = "PCI_AD";
INST "AD<14>.PAD" TNM = "PCI_AD";
INST "AD<15>.PAD" TNM = "PCI_AD";
INST "AD<16>.PAD" TNM = "PCI_AD";
INST "AD<17>.PAD" TNM = "PCI_AD";
INST "AD<18>.PAD" TNM = "PCI_AD";
INST "AD<19>.PAD" TNM = "PCI_AD";
INST "AD<20>.PAD" TNM = "PCI_AD";
INST "AD<21>.PAD" TNM = "PCI_AD";
INST "AD<22>.PAD" TNM = "PCI_AD";
INST "AD<23>.PAD" TNM = "PCI_AD";
INST "AD<24>.PAD" TNM = "PCI_AD";
INST "AD<25>.PAD" TNM = "PCI_AD";
INST "AD<26>.PAD" TNM = "PCI_AD";
INST "AD<27>.PAD" TNM = "PCI_AD";
INST "AD<28>.PAD" TNM = "PCI_AD";
INST "AD<29>.PAD" TNM = "PCI_AD";
INST "AD<30>.PAD" TNM = "PCI_AD";
INST "AD<31>.PAD" TNM = "PCI_AD";
INST "AD0.PAD" TNM = "PCI_AD";
INST "AD1.PAD" TNM = "PCI_AD";
INST "AD2.PAD" TNM = "PCI_AD";
INST "AD3.PAD" TNM = "PCI_AD";
INST "AD4.PAD" TNM = "PCI_AD";
INST "AD5.PAD" TNM = "PCI_AD";
INST "AD6.PAD" TNM = "PCI_AD";
INST "AD7.PAD" TNM = "PCI_AD";
INST "AD8.PAD" TNM = "PCI_AD";
INST "AD9.PAD" TNM = "PCI_AD";
INST "AD10.PAD" TNM = "PCI_AD";
INST "AD11.PAD" TNM = "PCI_AD";
INST "AD12.PAD" TNM = "PCI_AD";
INST "AD13.PAD" TNM = "PCI_AD";
INST "AD14.PAD" TNM = "PCI_AD";
INST "AD15.PAD" TNM = "PCI_AD";
INST "AD16.PAD" TNM = "PCI_AD";
INST "AD17.PAD" TNM = "PCI_AD";
INST "AD18.PAD" TNM = "PCI_AD";
INST "AD19.PAD" TNM = "PCI_AD";
INST "AD20.PAD" TNM = "PCI_AD";
INST "AD21.PAD" TNM = "PCI_AD";
INST "AD22.PAD" TNM = "PCI_AD";
INST "AD23.PAD" TNM = "PCI_AD";
INST "AD24.PAD" TNM = "PCI_AD";
INST "AD25.PAD" TNM = "PCI_AD";
INST "AD26.PAD" TNM = "PCI_AD";
INST "AD27.PAD" TNM = "PCI_AD";
INST "AD28.PAD" TNM = "PCI_AD";
INST "AD29.PAD" TNM = "PCI_AD";
INST "AD30.PAD" TNM = "PCI_AD";
INST "AD31.PAD" TNM = "PCI_AD";
TIMEGRP "PCI_AD" OFFSET = IN 7 ns BEFORE "CLK";
TIMEGRP "PCI_AD" OFFSET = OUT 11 ns AFTER "CLK";
NET "AD<0>" IOSTANDARD = PCI33_5;
NET "AD<1>" IOSTANDARD = PCI33_5;
NET "AD<2>" IOSTANDARD = PCI33_5;
NET "AD<3>" IOSTANDARD = PCI33_5;
NET "AD<4>" IOSTANDARD = PCI33_5;
NET "AD<5>" IOSTANDARD = PCI33_5;
NET "AD<6>" IOSTANDARD = PCI33_5;
NET "AD<7>" IOSTANDARD = PCI33_5;
NET "AD<8>" IOSTANDARD = PCI33_5;
NET "AD<9>" IOSTANDARD = PCI33_5;
NET "AD<10>" IOSTANDARD = PCI33_5;
NET "AD<11>" IOSTANDARD = PCI33_5;
NET "AD<12>" IOSTANDARD = PCI33_5;
NET "AD<13>" IOSTANDARD = PCI33_5;
NET "AD<14>" IOSTANDARD = PCI33_5;
NET "AD<15>" IOSTANDARD = PCI33_5;
NET "AD<16>" IOSTANDARD = PCI33_5;
NET "AD<17>" IOSTANDARD = PCI33_5;
NET "AD<18>" IOSTANDARD = PCI33_5;
NET "AD<19>" IOSTANDARD = PCI33_5;
NET "AD<20>" IOSTANDARD = PCI33_5;
NET "AD<21>" IOSTANDARD = PCI33_5;
NET "AD<22>" IOSTANDARD = PCI33_5;
NET "AD<23>" IOSTANDARD = PCI33_5;
NET "AD<24>" IOSTANDARD = PCI33_5;
NET "AD<25>" IOSTANDARD = PCI33_5;
NET "AD<26>" IOSTANDARD = PCI33_5;
NET "AD<27>" IOSTANDARD = PCI33_5;
NET "AD<28>" IOSTANDARD = PCI33_5;
NET "AD<29>" IOSTANDARD = PCI33_5;
NET "AD<30>" IOSTANDARD = PCI33_5;
NET "AD<31>" IOSTANDARD = PCI33_5;
INST "CBE<0>.PAD" TNM = "PCI_CBE";
INST "CBE<1>.PAD" TNM = "PCI_CBE";
INST "CBE<2>.PAD" TNM = "PCI_CBE";
INST "CBE<3>.PAD" TNM = "PCI_CBE";
NET "AD0" IOSTANDARD = PCI33_5;
NET "AD1" IOSTANDARD = PCI33_5;
NET "AD2" IOSTANDARD = PCI33_5;
NET "AD3" IOSTANDARD = PCI33_5;
NET "AD4" IOSTANDARD = PCI33_5;
NET "AD5" IOSTANDARD = PCI33_5;
NET "AD6" IOSTANDARD = PCI33_5;
NET "AD7" IOSTANDARD = PCI33_5;
NET "AD8" IOSTANDARD = PCI33_5;
NET "AD9" IOSTANDARD = PCI33_5;
NET "AD10" IOSTANDARD = PCI33_5;
NET "AD11" IOSTANDARD = PCI33_5;
NET "AD12" IOSTANDARD = PCI33_5;
NET "AD13" IOSTANDARD = PCI33_5;
NET "AD14" IOSTANDARD = PCI33_5;
NET "AD15" IOSTANDARD = PCI33_5;
NET "AD16" IOSTANDARD = PCI33_5;
NET "AD17" IOSTANDARD = PCI33_5;
NET "AD18" IOSTANDARD = PCI33_5;
NET "AD19" IOSTANDARD = PCI33_5;
NET "AD20" IOSTANDARD = PCI33_5;
NET "AD21" IOSTANDARD = PCI33_5;
NET "AD22" IOSTANDARD = PCI33_5;
NET "AD23" IOSTANDARD = PCI33_5;
NET "AD24" IOSTANDARD = PCI33_5;
NET "AD25" IOSTANDARD = PCI33_5;
NET "AD26" IOSTANDARD = PCI33_5;
NET "AD27" IOSTANDARD = PCI33_5;
NET "AD28" IOSTANDARD = PCI33_5;
NET "AD29" IOSTANDARD = PCI33_5;
NET "AD30" IOSTANDARD = PCI33_5;
NET "AD31" IOSTANDARD = PCI33_5;
INST "CBE0.PAD" TNM = "PCI_CBE";
INST "CBE1.PAD" TNM = "PCI_CBE";
INST "CBE2.PAD" TNM = "PCI_CBE";
INST "CBE3.PAD" TNM = "PCI_CBE";
 
TIMEGRP "PCI_CBE" OFFSET = IN 7 ns BEFORE "CLK";
TIMEGRP "PCI_CBE" OFFSET = OUT 11 ns AFTER "CLK";
 
NET "CBE<0>" IOSTANDARD = PCI33_5;
NET "CBE<1>" IOSTANDARD = PCI33_5;
NET "CBE<2>" IOSTANDARD = PCI33_5;
NET "CBE<3>" IOSTANDARD = PCI33_5;
NET "CBE0" IOSTANDARD = PCI33_5;
NET "CBE1" IOSTANDARD = PCI33_5;
NET "CBE2" IOSTANDARD = PCI33_5;
NET "CBE3" IOSTANDARD = PCI33_5;
 
#INST "DEVSEL.PAD" TNM = "PCI_CTRL" ;
 
458,6 → 460,9
 
#INST "TRDY.PAD" TNM = "PCI_CTRL" ;
 
NET "IDSEL" OFFSET = IN 7ns BEFORE "CLK" ;
NET "IDSEL" IOSTANDARD = PCI33_5 ;
 
##################################################################################
# Pin locations
##################################################################################
466,25 → 471,25
NET "RST" LOC = "P199" ;
NET "GNT" LOC = "P200" ;
NET "REQ" LOC = "P201" ;
NET "AD<31>" LOC = "P203" ;
NET "AD<30>" LOC = "P204" ;
NET "AD<29>" LOC = "P205" ;
NET "AD<28>" LOC = "P206" ;
NET "AD<27>" LOC = "P3" ;
NET "AD<26>" LOC = "P4" ;
NET "AD<25>" LOC = "P5" ;
NET "AD<24>" LOC = "P6" ;
NET "CBE<3>" LOC = "P8" ;
NET "AD31" LOC = "P203" ;
NET "AD30" LOC = "P204" ;
NET "AD29" LOC = "P205" ;
NET "AD28" LOC = "P206" ;
NET "AD27" LOC = "P3" ;
NET "AD26" LOC = "P4" ;
NET "AD25" LOC = "P5" ;
NET "AD24" LOC = "P6" ;
NET "CBE3" LOC = "P8" ;
NET "IDSEL" LOC = "P9" ;
NET "AD<23>" LOC = "P10" ;
NET "AD<22>" LOC = "P14" ;
NET "AD<21>" LOC = "P15" ;
NET "AD<20>" LOC = "P16" ;
NET "AD<19>" LOC = "P17" ;
NET "AD<18>" LOC = "P18" ;
NET "AD<17>" LOC = "P20" ;
NET "AD<16>" LOC = "P21" ;
NET "CBE<2>" LOC = "P22" ;
NET "AD23" LOC = "P10" ;
NET "AD22" LOC = "P14" ;
NET "AD21" LOC = "P15" ;
NET "AD20" LOC = "P16" ;
NET "AD19" LOC = "P17" ;
NET "AD18" LOC = "P18" ;
NET "AD17" LOC = "P20" ;
NET "AD16" LOC = "P21" ;
NET "CBE2" LOC = "P22" ;
NET "FRAME" LOC = "P23" ;
NET "IRDY" LOC = "P24" ;
#
494,24 → 499,24
NET "PERR" LOC = "P31" ;
NET "SERR" LOC = "P33" ;
NET "PAR" LOC = "P34" ;
NET "CBE<1>" LOC = "P35" ;
NET "AD<15>" LOC = "P36" ;
NET "AD<14>" LOC = "P37" ;
NET "AD<13>" LOC = "P41" ;
NET "AD<12>" LOC = "P42" ;
NET "AD<11>" LOC = "P43" ;
NET "AD<10>" LOC = "P45" ;
NET "AD<9>" LOC = "P46" ;
NET "AD<8>" LOC = "P47" ;
NET "CBE<0>" LOC = "P48" ;
NET "AD<7>" LOC = "P49" ;
NET "AD<6>" LOC = "P57" ;
NET "AD<5>" LOC = "P58" ;
NET "AD<4>" LOC = "P59" ;
NET "AD<3>" LOC = "P61" ;
NET "AD<2>" LOC = "P62" ;
NET "AD<1>" LOC = "P63" ;
NET "AD<0>" LOC = "P67" ;
NET "CBE1" LOC = "P35" ;
NET "AD15" LOC = "P36" ;
NET "AD14" LOC = "P37" ;
NET "AD13" LOC = "P41" ;
NET "AD12" LOC = "P42" ;
NET "AD11" LOC = "P43" ;
NET "AD10" LOC = "P45" ;
NET "AD9" LOC = "P46" ;
NET "AD8" LOC = "P47" ;
NET "CBE0" LOC = "P48" ;
NET "AD7" LOC = "P49" ;
NET "AD6" LOC = "P57" ;
NET "AD5" LOC = "P58" ;
NET "AD4" LOC = "P59" ;
NET "AD3" LOC = "P61" ;
NET "AD2" LOC = "P62" ;
NET "AD1" LOC = "P63" ;
NET "AD0" LOC = "P67" ;
 
#
#NET "HSYNC" LOC = "P188" ;
524,18 → 529,18
NET "CRT_CLK" LOC = "P182" ;
NET "HSYNC" LOC = "P83" ;
NET "VSYNC" LOC = "P84" ;
NET "RGB<4>" LOC = "P166" ;
NET "RGB<5>" LOC = "P167" ;
NET "RGB<6>" LOC = "P168" ;
NET "RGB<7>" LOC = "P172" ;
NET "RGB<8>" LOC = "P173" ;
NET "RGB<9>" LOC = "P174" ;
NET "RGB<10>" LOC = "P175" ;
NET "RGB<11>" LOC = "P176" ;
NET "RGB<12>" LOC = "P178" ;
NET "RGB<13>" LOC = "P179" ;
NET "RGB<14>" LOC = "P180" ;
NET "RGB<15>" LOC = "P181" ;
NET "RGB4" LOC = "P166" ;
NET "RGB5" LOC = "P167" ;
NET "RGB6" LOC = "P168" ;
NET "RGB7" LOC = "P172" ;
NET "RGB8" LOC = "P173" ;
NET "RGB9" LOC = "P174" ;
NET "RGB10" LOC = "P175" ;
NET "RGB11" LOC = "P176" ;
NET "RGB12" LOC = "P178" ;
NET "RGB13" LOC = "P179" ;
NET "RGB14" LOC = "P180" ;
NET "RGB15" LOC = "P181" ;
NET "LED" LOC = "P202" ;
#
 
/trunk/apps/crt/syn/synplify/pci_crt.ucf
0,0 → 1,378
##############################################
# BASIC UCF SYNTAX EXAMPLES V2.1.6 #
##############################################
#
# The "#" symbol is a comment character. To use this sample file, find the
# specification necessary, remove the comment character (#) from the beginning
# of the line, and modify the line (if necessary) to fit your design.
#
# TIMING SPECIFICATIONS
#
# Timing specifications can be applied to the entire device (global) or to
# specific groups in your design (called "time groups'). The time groups are
# declared in two basic ways.
#
# Method 1: Based on a net name, where 'my_net' is a net that touches all the
# logic to be grouped in to 'logic_grp'. Example:
#NET my_net TNM_NET = logic_grp ;
#
# Method 2: Group using the key word 'TIMEGRP' and declare using the names of
# logic in your design. Example:
#TIMEGRP group_name = FFS ("U1/*");
# creates a group called 'group_name' for all flip-flops within
# the hierarchical block called U1. Wildcards are valid.
#
# Grouping is very important because it lets you tell the software which parts
# of a design run at which speeds. For the majority of the designs with only
# one clock, use simple global constraints.
#
# The type of grouping constraint you use can vary depending on the synthesis
# tools you are using. Foundation Express does better with Method 2.
#
#
############################################################
# Internal to the device clock speed specifications - Tsys #
############################################################
#
# data _________ /^^^^^\ _________ out
# ----------| D Q |-----{ LOGIC } -----| D Q |------
# | | \vvvvv/ | |
# ---|> CLK | ---|> CLK |
# clock | --------- | ---------
# ------------------------------------
#
# ---------------
# Single Clock
# ---------------
#
# ----------------
# PERIOD TIME-SPEC
# ----------------
# The PERIOD spec. covers all timing paths that start or end at a
# register, latch, or synchronous RAM which are clocked by the reference
# net (excluding pad destinations). Also covered is the setup
# requirement of the synchronous element relative to other elements
# (ex. flip flops, pads, etc...).
# NOTE: The default unit for time is nanoseconds.
#
#NET clock PERIOD = 50ns ;
#
# -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
# FROM:TO style timespecs can be used to constrain paths between time
# groups. NOTE: Keywords: RAMS, FFS, PADS, and LATCHES are predefined
# time groups used to specify all elements of each type in a design.
#TIMEGRP RFFS = RISING FFS ("*"); // creates a rising group called RFFS
#TIMEGRP FFFS = FALLING FFS ("*"); // creates a falling group called FFFS
#TIMESPEC TSF2F = FROM : FFS : TO : FFS : 50 ns; // Flip-flips with the same edge
#TIMESPEC TSR2F = FROM : RFFS : TO : FFFS : 25 ns; // rising edge to falling edge
#TIMESPEC TSF2R = FROM : FFFS : TO : RFFS : 25 ns; // falling edge to rising edge
#
# ---------------
# Multiple Clocks
# ---------------
# Requires a combination of the 'Period' and 'FROM:TO' type time specifications
#NET clock1 TNM_NET = clk1_grp ;
#NET clock2 TNM_NET = clk2_grp ;
#
#TIMESPEC TS_clk1 = PERIOD : clk1_grp : 50 ;
#TIMESPEC TS_clk2 = PERIOD : clk2_grp : 30 ;
#TIMESPEC TS_ck1_2_ck2 = FROM : clk1_grp : TO : clk2_grp : 50 ;
#TIMESPEC TS_ck2_2_ck1 = FROM : clk2_grp : TO : clk1_grp : 30 ;
#
#
############################################################
# CLOCK TO OUT specifications - Tco #
############################################################
#
# from _________ /^^^^^\ --------\
# ----------| D Q |-----{ LOGIC } -----| Pad >
# PLD | | \vvvvv/ --------/
# ---|> CLK |
# clock | ---------
# --------
#
# ----------------
# OFFSET TIME-SPEC
# ----------------
# To automatically include clock buffer/routing delay in your
# clock-to-out timing specifications, use OFFSET constraints .
# For an output where the maximum clock-to-out (Tco) is 25 ns:
#
#NET out_net_name OFFSET = OUT 25 AFTER clock_net_name ;
#
# -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSF2P = FROM : FFS : TO : PADS : 25 ns;
# Note that FROM: FFS : TO: PADS constraints start the delay analysis
# at the flip flop itself, and not the clock input pin. The recommended
# method to create a clock-to-out constraint is to use an OFFSET constraint.
#
#
############################################################
# Pad to Flip-Flop speed specifications - Tsu #
############################################################
#
# ------\ /^^^^^\ _________ into PLD
# |pad >-------{ LOGIC } -----| D Q |------
# ------/ \vvvvv/ | |
# ---|> CLK |
# clock | ---------
# ----------------------------
#
# ----------------
# OFFSET TIME-SPEC
# ----------------
# To automatically account for clock delay in your input setup timing
# specifications, use OFFSET constraints.
# For an input where the maximum setup time is 25 ns:
#NET in_net_name OFFSET = IN 25 BEFORE clock_net_name ;
#
# -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSP2F = FROM : PADS : TO : FFS : 25 ns;
# Note that FROM: PADS : TO: FFS constraints do not take into account any
# delay for the clock path. The recommended method to create an input
# setup time constraint is to use an OFFSET constraint.
#
#
############################################################
# Pad to Pad speed specifications - Tpd #
############################################################
#
# ------\ /^^^^^\ -------\
# |pad >-------{ LOGIC } -----| pad >
# ------/ \vvvvv/ -------/
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSP2P = FROM : PADS : TO : PADS : 125 ns;
#
#
############################################################
# Other timing specifications #
############################################################
#
# -------------
# TIMING IGNORE
# -------------
# If you can ignore timing of paths, use Timing Ignore (TIG). NOTE: The
# "*" character is a wild card, which can be used for bus names. A "?"
# character can be used to wild-card one character.
# Ignore timing of net reset_n:
#NET : reset_n : TIG ;
#
# Ignore data_reg(7:0) net in instance mux_mem:
#NET : mux_mem/data_reg* : TIG ;
#
# Ignore data_reg(7:0) net in instance mux_mem as related to a TIMESPEC
# named TS01 only:
#NET : mux_mem/data_reg* : TIG = TS01 ;
#
# Ignore data1_sig and data2_sig nets:
#NET : data?_sig : TIG ;
#
# ---------------
# PATH EXCEPTIONS
# ---------------
# If your design has outputs that can be slower than others, you can
# create specific timespecs similar to this example for output nets
# named out_data(7:0) and irq_n:
#TIMEGRP slow_outs = PADS(out_data* : irq_n) ;
#TIMEGRP fast_outs = PADS : EXCEPT : slow_outs ;
#TIMESPEC TS08 = FROM : FFS : TO : fast_outs : 22 ;
#TIMESPEC TS09 = FROM : FFS : TO : slow_outs : 75 ;
#
# If you have multi-cycle FF to FF paths, you can create a time group
# using either the TIMEGRP or TNM statements.
#
# WARNING: Many VHDL/Verilog synthesizers do not predictably name flip
# flop Q output nets. Most synthesizers do assign predictable instance
# names to flip flops, however.
#
# TIMEGRP example:
#TIMEGRP slowffs = FFS(inst_path/ff_q_output_net1* :
#inst_path/ff_q_output_net2*);
#
# TNM attached to instance example:
#INST inst_path/ff_instance_name1_reg* TNM = slowffs ;
#INST inst_path/ff_instance_name2_reg* TNM = slowffs ;
#
# If a FF clock-enable is used on all flip flops of a multi-cycle path,
# you can attach TNM to the clock enable net. NOTE: TNM attached to a
# net "forward traces" to any FF, LATCH, RAM, or PAD attached to the
# net.
#NET ff_clock_enable_net TNM = slowffs ;
#
# Example of using "slowffs" timegroup, in a FROM:TO timespec, with
# either of the three timegroup methods shown above:
#TIMESPEC TS10 = FROM : slowffs : TO : FFS : 100 ;
#
# Constrain the skew or delay associate with a net.
#NET any_net_name MAXSKEW = 7 ;
#NET any_net_name MAXDELAY = 20 ns;
#
#
# Constraint priority in your .ucf file is as follows:
#
# highest 1. Timing Ignore (TIG)
# 2. FROM : THRU : TO specs
# 3. FROM : TO specs
# lowest 4. PERIOD specs
#
# See the on-line "Library Reference Guide" document for
# additional timespec features and more information.
#
#
############################################################
# #
# LOCATION and ATTRIBUTE SPECIFICATIONS #
# #
############################################################
# Pin and CLB location locking constraints #
############################################################
#
# -----------------------
# Assign an IO pin number
# -----------------------
#INST io_buf_instance_name LOC = P110 ;
#NET io_net_name LOC = P111 ;
#
# -----------------------
# Assign a signal to a range of I/O pins
# -----------------------
#NET "signal_name" LOC=P32, P33, P34;
#
# -----------------------
# Place a logic element(called a BEL) in a specific CLB location.
# BEL = FF, LUT, RAM, etc...
# -----------------------
#INST instance_path/BEL_inst_name LOC = CLB_R17C36 ;
#
# -----------------------
# Place CLB in rectangular area from CLB R1C1 to CLB R5C7
# -----------------------
#INST /U1/U2/reg<0> LOC=clb_r1c1:clb_r5c7;
#
# -----------------------
# Place hierarchical logic block in rectangular area from CLB R1C1 to CLB R5C7
# -----------------------
#INST /U1* LOC=clb_r1c1:clb_r5c7;
#
# -----------------------
# Prohibit IO pin P26 or CLBR5C3 from being used:
# -----------------------
#CONFIG PROHIBIT = P26 ;
#CONFIG PROHIBIT = CLB_R5C3 ;
# Config Prohibit is very important for forcing the software to not use critical
# configuration pins like INIT or DOUT on the FPGA. The Mode pins and JTAG
# Pins require a special pad so they will not be available to this constraint
#
# -----------------------
# Assign an OBUF to be FAST or SLOW:
# -----------------------
#INST obuf_instance_name FAST ;
#INST obuf_instance_name SLOW ;
#
# -----------------------
# FPGAs only: IOB input Flip-flop delay specification
# -----------------------
# Declare an IOB input FF delay (default = MAXDELAY).
# NOTE: MEDDELAY/NODELAY can be attached to a CLB FF that is pushed
# into an IOB by the "map -pr i" option.
#INST input_ff_instance_name MEDDELAY ;
#INST input_ff_instance_name NODELAY ;
#
# -----------------------
# Assign Global Clock Buffers Lower Left Right Side
# -----------------------
# INST gbuf1 LOC=SSW
#
# #
 
 
# define a group of metastable Flip-Flops
INST *sync_data_out* TNM = sync_ffs ;
TIMESPEC TS_sync_flops = FROM : sync_ffs : TO : FFS : 15 ;
INST *meta_q_o* TNM = meta_ffs ;
TIMESPEC TS_meta_flops = FROM : meta_ffs : TO : FFS : 15 ;
 
NET CLK TNM_NET = CLK_GRP ;
NET CRT_CLK TNM_NET = CRT_CLK_GRP ;
 
TIMESPEC TS_CLK_2_CRT_CLK = FROM : CLK_GRP : TO : CRT_CLK_GRP : 15 ;
TIMESPEC TS_CRT_CLK_2_CLK = FROM : CRT_CLK_GRP : TO : CLK_GRP : 15 ;
 
NET "AD0" IOSTANDARD = PCI33_5;
NET "AD1" IOSTANDARD = PCI33_5;
NET "AD2" IOSTANDARD = PCI33_5;
NET "AD3" IOSTANDARD = PCI33_5;
NET "AD4" IOSTANDARD = PCI33_5;
NET "AD5" IOSTANDARD = PCI33_5;
NET "AD6" IOSTANDARD = PCI33_5;
NET "AD7" IOSTANDARD = PCI33_5;
NET "AD8" IOSTANDARD = PCI33_5;
NET "AD9" IOSTANDARD = PCI33_5;
NET "AD10" IOSTANDARD = PCI33_5;
NET "AD11" IOSTANDARD = PCI33_5;
NET "AD12" IOSTANDARD = PCI33_5;
NET "AD13" IOSTANDARD = PCI33_5;
NET "AD14" IOSTANDARD = PCI33_5;
NET "AD15" IOSTANDARD = PCI33_5;
NET "AD16" IOSTANDARD = PCI33_5;
NET "AD17" IOSTANDARD = PCI33_5;
NET "AD18" IOSTANDARD = PCI33_5;
NET "AD19" IOSTANDARD = PCI33_5;
NET "AD20" IOSTANDARD = PCI33_5;
NET "AD21" IOSTANDARD = PCI33_5;
NET "AD22" IOSTANDARD = PCI33_5;
NET "AD23" IOSTANDARD = PCI33_5;
NET "AD24" IOSTANDARD = PCI33_5;
NET "AD25" IOSTANDARD = PCI33_5;
NET "AD26" IOSTANDARD = PCI33_5;
NET "AD27" IOSTANDARD = PCI33_5;
NET "AD28" IOSTANDARD = PCI33_5;
NET "AD29" IOSTANDARD = PCI33_5;
NET "AD30" IOSTANDARD = PCI33_5;
NET "AD31" IOSTANDARD = PCI33_5;
 
NET "CLK" IOSTANDARD = PCI33_5;
 
NET "CBE0" IOSTANDARD = PCI33_5;
NET "CBE1" IOSTANDARD = PCI33_5;
NET "CBE2" IOSTANDARD = PCI33_5;
NET "CBE3" IOSTANDARD = PCI33_5;
 
NET "DEVSEL" IOSTANDARD = PCI33_5;
 
NET "FRAME" IOSTANDARD = PCI33_5;
 
NET "GNT" IOSTANDARD = PCI33_5;
NET "RST" IOSTANDARD = PCI33_5;
NET "INTA" IOSTANDARD = PCI33_5;
 
NET "IRDY" IOSTANDARD = PCI33_5;
 
NET "PAR" IOSTANDARD = PCI33_5;
 
NET "PERR" IOSTANDARD = PCI33_5;
 
NET "REQ" IOSTANDARD = PCI33_5;
 
NET "SERR" IOSTANDARD = PCI33_5;
 
NET "STOP" IOSTANDARD = PCI33_5;
 
NET "TRDY" IOSTANDARD = PCI33_5;
 
NET "IDSEL" IOSTANDARD = PCI33_5;
trunk/apps/crt/syn/synplify/pci_crt.ucf Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/apps/crt/syn/synplify/pci_crt.sdc =================================================================== --- trunk/apps/crt/syn/synplify/pci_crt.sdc (nonexistent) +++ trunk/apps/crt/syn/synplify/pci_crt.sdc (revision 59) @@ -0,0 +1,259 @@ +# Synplicity, Inc. constraint file +# /shared/projects/pci/mihad/pci/apps/crt/syn/synplify/pci_crt.sdc +# Written on Fri Sep 27 11:42:06 2002 +# by Amplify, Amplify 3.1 Scope Editor + +# +# Clocks +# +define_clock -name {CLK} -period 30.000 -clockgroup pci_clkgrp +define_clock -name {CRT_CLK} -period 44.000 -clockgroup crt_clkgrp + +# +# Inputs/Outputs +# +define_input_delay {DEVSEL} 23.00 -ref CLK:r +define_input_delay {TRDY} 23.00 -ref CLK:r +define_input_delay {STOP} 23.00 -ref CLK:r +define_input_delay {IDSEL} 23.00 -ref CLK:r +define_input_delay {FRAME} 23.00 -ref CLK:r +define_input_delay {IRDY} 23.00 -ref CLK:r +define_input_delay {GNT} 20.00 -ref CLK:r +define_input_delay {PAR} 23.00 -ref CLK:r +define_input_delay {PERR} 23.00 -ref CLK:r +define_input_delay {AD0} 23.00 -ref CLK:r +define_input_delay {AD1} 23.00 -ref CLK:r +define_input_delay {AD2} 23.00 -ref CLK:r +define_input_delay {AD3} 23.00 -ref CLK:r +define_input_delay {AD4} 23.00 -ref CLK:r +define_input_delay {AD5} 23.00 -ref CLK:r +define_input_delay {AD6} 23.00 -ref CLK:r +define_input_delay {AD7} 23.00 -ref CLK:r +define_input_delay {AD8} 23.00 -ref CLK:r +define_input_delay {AD9} 23.00 -ref CLK:r +define_input_delay {AD10} 23.00 -ref CLK:r +define_input_delay {AD11} 23.00 -ref CLK:r +define_input_delay {AD12} 23.00 -ref CLK:r +define_input_delay {AD13} 23.00 -ref CLK:r +define_input_delay {AD14} 23.00 -ref CLK:r +define_input_delay {AD15} 23.00 -ref CLK:r +define_input_delay {AD16} 23.00 -ref CLK:r +define_input_delay {AD17} 23.00 -ref CLK:r +define_input_delay {AD18} 23.00 -ref CLK:r +define_input_delay {AD19} 23.00 -ref CLK:r +define_input_delay {AD20} 23.00 -ref CLK:r +define_input_delay {AD21} 23.00 -ref CLK:r +define_input_delay {AD22} 23.00 -ref CLK:r +define_input_delay {AD23} 23.00 -ref CLK:r +define_input_delay {AD24} 23.00 -ref CLK:r +define_input_delay {AD25} 23.00 -ref CLK:r +define_input_delay {AD26} 23.00 -ref CLK:r +define_input_delay {AD27} 23.00 -ref CLK:r +define_input_delay {AD28} 23.00 -ref CLK:r +define_input_delay {AD29} 23.00 -ref CLK:r +define_input_delay {AD30} 23.00 -ref CLK:r +define_input_delay {AD31} 23.00 -ref CLK:r +define_input_delay {CBE0} 23.00 -ref CLK:r +define_input_delay {CBE1} 23.00 -ref CLK:r +define_input_delay {CBE2} 23.00 -ref CLK:r +define_input_delay {CBE3} 23.00 -ref CLK:r +define_output_delay {AD0} 19.00 -ref CLK:r +define_output_delay {AD1} 19.00 -ref CLK:r +define_output_delay {AD2} 19.00 -ref CLK:r +define_output_delay {AD3} 19.00 -ref CLK:r +define_output_delay {AD4} 19.00 -ref CLK:r +define_output_delay {AD5} 19.00 -ref CLK:r +define_output_delay {AD6} 19.00 -ref CLK:r +define_output_delay {AD7} 19.00 -ref CLK:r +define_output_delay {AD8} 19.00 -ref CLK:r +define_output_delay {AD9} 19.00 -ref CLK:r +define_output_delay {AD10} 19.00 -ref CLK:r +define_output_delay {AD11} 19.00 -ref CLK:r +define_output_delay {AD12} 19.00 -ref CLK:r +define_output_delay {AD13} 19.00 -ref CLK:r +define_output_delay {AD14} 19.00 -ref CLK:r +define_output_delay {AD15} 19.00 -ref CLK:r +define_output_delay {AD16} 19.00 -ref CLK:r +define_output_delay {AD17} 19.00 -ref CLK:r +define_output_delay {AD18} 19.00 -ref CLK:r +define_output_delay {AD19} 19.00 -ref CLK:r +define_output_delay {AD20} 19.00 -ref CLK:r +define_output_delay {AD21} 19.00 -ref CLK:r +define_output_delay {AD22} 19.00 -ref CLK:r +define_output_delay {AD23} 19.00 -ref CLK:r +define_output_delay {AD24} 19.00 -ref CLK:r +define_output_delay {AD25} 19.00 -ref CLK:r +define_output_delay {AD26} 19.00 -ref CLK:r +define_output_delay {AD27} 19.00 -ref CLK:r +define_output_delay {AD28} 19.00 -ref CLK:r +define_output_delay {AD29} 19.00 -ref CLK:r +define_output_delay {AD30} 19.00 -ref CLK:r +define_output_delay {AD31} 19.00 -ref CLK:r +define_output_delay {CBE0} 19.00 -ref CLK:r +define_output_delay {CBE1} 19.00 -ref CLK:r +define_output_delay {CBE2} 19.00 -ref CLK:r +define_output_delay {CBE3} 19.00 -ref CLK:r +define_output_delay {DEVSEL} 19.00 -ref CLK:r +define_output_delay {TRDY} 19.00 -ref CLK:r +define_output_delay {STOP} 19.00 -ref CLK:r +define_output_delay {FRAME} 19.00 -ref CLK:r +define_output_delay {IRDY} 19.00 -ref CLK:r +define_output_delay {REQ} 18.00 -ref CLK:r +define_output_delay {PAR} 19.00 -ref CLK:r +define_output_delay {PERR} 19.00 -ref CLK:r +define_output_delay {SERR} 19.00 -ref CLK:r +define_input_delay -default 10.00 -ref CRT_CLK:r +define_output_delay -default 10.00 -ref CRT_CLK:r + +# +# Registers +# +#define_reg_output_delay {bridge.pci_target_unit.del_sync.comp_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.done_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.cache_lsize_to_wb_bits_sync.sync_data_out[6:0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.command_bit_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.int_pin_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.isr_bit0_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.isr_bit2_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.pci_err_cs_bits_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.sync_isr_2.clear_delete_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.sync_isr_2.delete_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.sync_pci_err_cs_8.clear_delete_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.configuration.sync_pci_err_cs_8.delete_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.comp_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.done_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.req_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.rty_exp_back_prop_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.del_sync.rty_exp_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pcir_fifo_ctrl.almost_empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pcir_fifo_ctrl.empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pcir_fifo_ctrl.full_out} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pcir_fifo_ctrl.stretched_empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.almost_empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.almost_full} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.full_out} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.stretched_empty} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_fifo_ctrl.two_left_out} -route 15.00 +#define_reg_output_delay {bridge.pci_target_unit.fifos.pciw_transaction_ready_out} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.del_sync.comp_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.del_sync.done_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.del_sync.req_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.del_sync.rty_exp_back_prop_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.del_sync.rty_exp_sync.sync_data_out[0]} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbr_fifo_ctrl.empty} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbr_fifo_ctrl.stretched_empty} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbw_fifo_ctrl.almost_full} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbw_fifo_ctrl.empty} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbw_fifo_ctrl.full_out} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbw_fifo_ctrl.stretched_empty} -route 15.00 +#define_reg_output_delay {bridge.wishbone_slave_unit.fifos.wbw_transaction_ready_out} -route 15.00 + +define_reg_output_delay {*sync_data_out*} -route 20.00 +define_reg_output_delay {*meta_q_o*} -route 20.00 + +# +# Multicycle Path +# + +# +# False Path +# + +# +# Attributes +# +define_attribute {CLK} xc_loc {P185} +define_attribute {INTA} xc_loc {P195} +define_attribute {RST} xc_loc {P199} +define_attribute {GNT} xc_loc {P200} +define_attribute {REQ} xc_loc {P201} +define_attribute {AD31} xc_loc {P203} +define_attribute {AD30} xc_loc {P204} +define_attribute {AD29} xc_loc {P205} +define_attribute {AD28} xc_loc {P206} +define_attribute {AD27} xc_loc {P3} +define_attribute {AD26} xc_loc {P4} +define_attribute {AD25} xc_loc {P5} +define_attribute {AD24} xc_loc {P6} +define_attribute {CBE3} xc_loc {P8} +define_attribute {IDSEL} xc_loc {P9} +define_attribute {AD23} xc_loc {P10} +define_attribute {AD22} xc_loc {P14} +define_attribute {AD21} xc_loc {P15} +define_attribute {AD20} xc_loc {P16} +define_attribute {AD19} xc_loc {P17} +define_attribute {AD18} xc_loc {P18} +define_attribute {AD17} xc_loc {P20} +define_attribute {AD16} xc_loc {P21} +define_attribute {CBE2} xc_loc {P22} +define_attribute {FRAME} xc_loc {P23} +define_attribute {IRDY} xc_loc {P24} +define_attribute {TRDY} xc_loc {P27} +define_attribute {DEVSEL} xc_loc {P29} +define_attribute {STOP} xc_loc {P30} +define_attribute {PERR} xc_loc {P31} +define_attribute {SERR} xc_loc {P33} +define_attribute {PAR} xc_loc {P34} +define_attribute {CBE1} xc_loc {P35} +define_attribute {AD15} xc_loc {P36} +define_attribute {AD14} xc_loc {P37} +define_attribute {AD13} xc_loc {P41} +define_attribute {AD12} xc_loc {P42} +define_attribute {AD11} xc_loc {P43} +define_attribute {AD10} xc_loc {P45} +define_attribute {AD9} xc_loc {P46} +define_attribute {AD8} xc_loc {P47} +define_attribute {CBE0} xc_loc {P48} +define_attribute {AD7} xc_loc {P49} +define_attribute {AD6} xc_loc {P57} +define_attribute {AD5} xc_loc {P58} +define_attribute {AD4} xc_loc {P59} +define_attribute {AD3} xc_loc {P61} +define_attribute {AD2} xc_loc {P62} +define_attribute {AD1} xc_loc {P63} +define_attribute {AD0} xc_loc {P67} +define_attribute {CRT_CLK} xc_loc {P182} +define_attribute {HSYNC} xc_loc {P83} +define_attribute {VSYNC} xc_loc {P84} +define_attribute {RGB4} xc_loc {P166} +define_attribute {RGB5} xc_loc {P167} +define_attribute {RGB6} xc_loc {P168} +define_attribute {RGB7} xc_loc {P172} +define_attribute {RGB8} xc_loc {P173} +define_attribute {RGB9} xc_loc {P174} +define_attribute {RGB10} xc_loc {P175} +define_attribute {RGB11} xc_loc {P176} +define_attribute {RGB12} xc_loc {P178} +define_attribute {RGB13} xc_loc {P179} +define_attribute {RGB14} xc_loc {P180} +define_attribute {RGB15} xc_loc {P181} +define_attribute {LED} xc_loc {P202} +define_global_attribute syn_useioff {1} +define_attribute {v:work.CBE_EN_CRIT} syn_hier {hard} +define_attribute {v:work.FRAME_CRIT} syn_hier {hard} +define_attribute {v:work.FRAME_EN_CRIT} syn_hier {hard} +define_attribute {v:work.FRAME_LOAD_CRIT} syn_hier {hard} +define_attribute {v:work.IRDY_OUT_CRIT} syn_hier {hard} +define_attribute {v:work.MAS_AD_EN_CRIT} syn_hier {hard} +define_attribute {v:work.MAS_AD_LOAD_CRIT} syn_hier {hard} +define_attribute {v:work.MAS_CH_STATE_CRIT} syn_hier {hard} +define_attribute {v:work.PAR_CRIT} syn_hier {hard} +define_attribute {v:work.PCI_IO_MUX_AD_EN_CRIT} syn_hier {hard} +define_attribute {v:work.PCI_IO_MUX_AD_LOAD_CRIT} syn_hier {hard} +define_attribute {v:work.PCI_TARGET32_CLK_EN} syn_hier {hard} +define_attribute {v:work.PCI_TARGET32_DEVS_CRIT} syn_hier {hard} +define_attribute {v:work.PCI_TARGET32_STOP_CRIT} syn_hier {hard} +define_attribute {v:work.PCI_TARGET32_TRDY_CRIT} syn_hier {hard} +define_attribute {v:work.PERR_CRIT} syn_hier {hard} +define_attribute {v:work.PERR_EN_CRIT} syn_hier {hard} +define_attribute {v:work.SERR_CRIT} syn_hier {hard} +define_attribute {v:work.SERR_EN_CRIT} syn_hier {hard} + +# +# Other Constraints +# + +# +# Order of waveforms +#
trunk/apps/crt/syn/synplify/pci_crt.sdc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/apps/crt/syn/synplify/pci_crt.prj =================================================================== --- trunk/apps/crt/syn/synplify/pci_crt.prj (nonexistent) +++ trunk/apps/crt/syn/synplify/pci_crt.prj (revision 59) @@ -0,0 +1,125 @@ +#-- Synplicity, Inc. +#-- Version Amplify 3.1 +#-- Project file /shared/projects/pci/mihad/pci/apps/crt/syn/synplify/pci_crt.prj +#-- Written on Fri Sep 27 16:20:50 2002 + + +#add_file options +add_file -verilog "$LIB/xilinx/virtex.v" +add_file -verilog "../../../../rtl/verilog/async_reset_flop.v" +add_file -verilog "../../../../rtl/verilog/cbe_en_crit.v" +add_file -verilog "../../../../rtl/verilog/conf_cyc_addr_dec.v" +add_file -verilog "../../../../rtl/verilog/conf_space.v" +add_file -verilog "../../../../rtl/verilog/cur_out_reg.v" +add_file -verilog "../../../../rtl/verilog/decoder.v" +add_file -verilog "../../../../rtl/verilog/delayed_sync.v" +add_file -verilog "../../../../rtl/verilog/delayed_write_reg.v" +add_file -verilog "../../../../rtl/verilog/fifo_control.v" +add_file -verilog "../../../../rtl/verilog/frame_crit.v" +add_file -verilog "../../../../rtl/verilog/frame_en_crit.v" +add_file -verilog "../../../../rtl/verilog/frame_load_crit.v" +add_file -verilog "../../../../rtl/verilog/irdy_out_crit.v" +add_file -verilog "../../../../rtl/verilog/mas_ad_en_crit.v" +add_file -verilog "../../../../rtl/verilog/mas_ad_load_crit.v" +add_file -verilog "../../../../rtl/verilog/mas_ch_state_crit.v" +add_file -verilog "../../../../rtl/verilog/out_reg.v" +add_file -verilog "../../../../rtl/verilog/par_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_bridge32.v" +add_file -verilog "../../../../rtl/verilog/pci_decoder.v" +add_file -verilog "../../../../rtl/verilog/pci_in_reg.v" +add_file -verilog "../../../../rtl/verilog/pci_io_mux_ad_en_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_io_mux_ad_load_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_io_mux.v" +add_file -verilog "../../../../rtl/verilog/pci_master32_sm_if.v" +add_file -verilog "../../../../rtl/verilog/pci_master32_sm.v" +add_file -verilog "../../../../rtl/verilog/pci_parity_check.v" +add_file -verilog "../../../../rtl/verilog/pci_ram_16x40d.v" +add_file -verilog "../../../../rtl/verilog/pci_rst_int.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_clk_en.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_devs_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_interface.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_sm.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_stop_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_target32_trdy_crit.v" +add_file -verilog "../../../../rtl/verilog/pci_target_unit.v" +add_file -verilog "../../../../rtl/verilog/pci_tpram.v" +add_file -verilog "../../../../rtl/verilog/pciw_fifo_control.v" +add_file -verilog "../../../../rtl/verilog/pciw_pcir_fifos.v" +add_file -verilog "../../../../rtl/verilog/perr_crit.v" +add_file -verilog "../../../../rtl/verilog/perr_en_crit.v" +add_file -verilog "../../../../rtl/verilog/serr_crit.v" +add_file -verilog "../../../../rtl/verilog/serr_en_crit.v" +add_file -verilog "../../../../rtl/verilog/synchronizer_flop.v" +add_file -verilog "../../../../rtl/verilog/sync_module.v" +add_file -verilog "../../../../rtl/verilog/wb_addr_mux.v" +add_file -verilog "../../../../rtl/verilog/wb_master.v" +add_file -verilog "../../../../rtl/verilog/wbr_fifo_control.v" +add_file -verilog "../../../../rtl/verilog/wb_slave_unit.v" +add_file -verilog "../../../../rtl/verilog/wb_slave.v" +add_file -verilog "../../../../rtl/verilog/wb_tpram.v" +add_file -verilog "../../../../rtl/verilog/wbw_fifo_control.v" +add_file -verilog "../../../../rtl/verilog/wbw_wbr_fifos.v" +add_file -verilog "../../rtl/verilog/crtc_iob.v" +add_file -verilog "../../rtl/verilog/ssvga_crtc.v" +add_file -verilog "../../rtl/verilog/ssvga_fifo.v" +add_file -verilog "../../rtl/verilog/ssvga_top.v" +add_file -verilog "../../rtl/verilog/ssvga_wbm_if.v" +add_file -verilog "../../rtl/verilog/ssvga_wbs_if.v" +add_file -constraint "pci_crt.sdc" +add_file -verilog "/shared/projects/pci/mihad/pci/rtl/verilog/meta_flop.v" +add_file -verilog "../../rtl/verilog/top.v" + +#reporting options + + +#implementation: "rev_1" +impl -add rev_1 + +#device options +set_option -technology SPARTAN2 +set_option -part XC2S150 +set_option -package PQ208 +set_option -speed_grade -5 + +#compilation/mapping options +set_option -default_enum_encoding default +set_option -symbolic_fsm_compiler 0 +set_option -resource_sharing 0 +set_option -use_fsm_explorer 0 + +#map options +set_option -frequency 50.000 +set_option -fanout_limit 50 +set_option -disable_io_insertion 0 +set_option -pipe 0 +set_option -fixgatedclocks 0 +set_option -retiming 0 +set_option -modular 0 + +#simulation options +set_option -write_verilog 0 +set_option -write_vhdl 0 + +#automatic place and route (vendor) options +set_option -write_apr_constraint 1 + +#set result format/file last +project -result_file "rev_1/top.edf" + +#implementation attributes +set_option -vlog_std v95 +set_option -compiler_compatible 0 +set_option -random_floorplan 0 +set_option -include_path "../../../../rtl/verilog/;../../rtl/verilog/" + +#netlist optimizer options +set_option -enable_nfilter 0 +set_option -feedthrough 1 +set_option -constant_prop 1 +set_option -level_hierarchy 0 + +#physical constraint options +set_option -floorplan "" +set_option -nfilter_user_path "" +set_option -pin_assignment "" +impl -active "rev_1"
trunk/apps/crt/syn/synplify/pci_crt.prj Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/bin/rtl_file_list.lst =================================================================== --- trunk/sim/rtl_sim/bin/rtl_file_list.lst (revision 58) +++ trunk/sim/rtl_sim/bin/rtl_file_list.lst (revision 59) @@ -51,3 +51,4 @@ ../../../rtl/verilog/pci_rst_int.v ../../../rtl/verilog/sync_module.v ../../../rtl/verilog/wb_tpram.v +../../../rtl/verilog/meta_flop.v

powered by: WebSVN 2.1.0

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