Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
P
Production Test Suite
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
9
Issues
9
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Production Test Suite
Commits
542722f7
Commit
542722f7
authored
Dec 10, 2019
by
Evangelia Gousiou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup of vhdl folder
parent
f584b6c1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
553 additions
and
2080 deletions
+553
-2080
Manifest.py
test/spec/vhdl/general-cores/modules/genrams/Manifest.py
+0
-14
Manifest.py
...ec/vhdl/general-cores/modules/genrams/generic/Manifest.py
+0
-2
generic_async_fifo.vhd
...eral-cores/modules/genrams/generic/generic_async_fifo.vhd
+0
-162
generic_sync_fifo.vhd
...neral-cores/modules/genrams/generic/generic_sync_fifo.vhd
+0
-130
genram_pkg.vhd
test/spec/vhdl/general-cores/modules/genrams/genram_pkg.vhd
+0
-221
inferred_async_fifo.vhd
...hdl/general-cores/modules/genrams/inferred_async_fifo.vhd
+0
-276
inferred_sync_fifo.vhd
...vhdl/general-cores/modules/genrams/inferred_sync_fifo.vhd
+0
-272
Manifest.py
...pec/vhdl/general-cores/modules/genrams/xilinx/Manifest.py
+0
-7
generic_simple_dpram.vhd
...ral-cores/modules/genrams/xilinx/generic_simple_dpram.vhd
+0
-99
Manifest.py
test/spec/vhdl/spec_pts_ddr/rtl/Manifest.py
+8
-15
spec_pts_ddr.ucf
test/spec/vhdl/spec_pts_ddr/spec_pts_ddr.ucf
+0
-592
Makefile
test/spec/vhdl/spec_pts_ddr/syn/Makefile
+158
-267
Manifest.py
test/spec/vhdl/spec_pts_ddr/syn/Manifest.py
+6
-2
spec_pts_ddr.xise
test/spec/vhdl/spec_pts_ddr/syn/spec_pts_ddr.xise
+381
-21
No files found.
test/spec/vhdl/general-cores/modules/genrams/Manifest.py
deleted
100644 → 0
View file @
f584b6c1
files
=
[
"genram_pkg.vhd"
,
"memory_loader_pkg.vhd"
,
"generic_shiftreg_fifo.vhd"
,
"inferred_sync_fifo.vhd"
,
"inferred_async_fifo.vhd"
];
if
(
target
==
"altera"
):
modules
=
{
"local"
:
"altera"
}
elif
(
target
==
"xilinx"
and
syn_device
[
0
:
4
]
.
upper
()
==
"XC6V"
):
modules
=
{
"local"
:
[
"xilinx"
,
"xilinx/virtex6"
]}
elif
(
target
==
"xilinx"
):
modules
=
{
"local"
:
[
"xilinx"
,
"generic"
]}
test/spec/vhdl/general-cores/modules/genrams/generic/Manifest.py
deleted
100644 → 0
View file @
f584b6c1
files
=
[
"generic_async_fifo.vhd"
,
"generic_sync_fifo.vhd"
]
test/spec/vhdl/general-cores/modules/genrams/generic/generic_async_fifo.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Parametrizable asynchronous FIFO (Generic version)
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : generic_async_fifo.vhd
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2011-01-25
-- Last update: 2012-07-03
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
-- Description: Dual-clock asynchronous FIFO.
-- - configurable data width and size
-- - configurable full/empty/almost full/almost empty/word count signals
-------------------------------------------------------------------------------
-- Copyright (c) 2011 CERN
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2011-01-25 1.0 twlostow Created
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
genram_pkg
.
all
;
entity
generic_async_fifo
is
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
-- Read-side flag selection
g_with_rd_empty
:
boolean
:
=
true
;
-- with empty flag
g_with_rd_full
:
boolean
:
=
false
;
-- with full flag
g_with_rd_almost_empty
:
boolean
:
=
false
;
g_with_rd_almost_full
:
boolean
:
=
false
;
g_with_rd_count
:
boolean
:
=
false
;
-- with words counter
g_with_wr_empty
:
boolean
:
=
false
;
g_with_wr_full
:
boolean
:
=
true
;
g_with_wr_almost_empty
:
boolean
:
=
false
;
g_with_wr_almost_full
:
boolean
:
=
false
;
g_with_wr_count
:
boolean
:
=
false
;
g_almost_empty_threshold
:
integer
;
-- threshold for almost empty flag
g_almost_full_threshold
:
integer
-- threshold for almost full flag
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
-- write port
clk_wr_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
wr_empty_o
:
out
std_logic
;
wr_full_o
:
out
std_logic
;
wr_almost_empty_o
:
out
std_logic
;
wr_almost_full_o
:
out
std_logic
;
wr_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
-- read port
clk_rd_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
rd_empty_o
:
out
std_logic
;
rd_full_o
:
out
std_logic
;
rd_almost_empty_o
:
out
std_logic
;
rd_almost_full_o
:
out
std_logic
;
rd_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
)
);
end
generic_async_fifo
;
architecture
syn
of
generic_async_fifo
is
component
inferred_async_fifo
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
;
g_with_rd_empty
:
boolean
;
g_with_rd_full
:
boolean
;
g_with_rd_almost_empty
:
boolean
;
g_with_rd_almost_full
:
boolean
;
g_with_rd_count
:
boolean
;
g_with_wr_empty
:
boolean
;
g_with_wr_full
:
boolean
;
g_with_wr_almost_empty
:
boolean
;
g_with_wr_almost_full
:
boolean
;
g_with_wr_count
:
boolean
;
g_almost_empty_threshold
:
integer
;
g_almost_full_threshold
:
integer
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_wr_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
wr_empty_o
:
out
std_logic
;
wr_full_o
:
out
std_logic
;
wr_almost_empty_o
:
out
std_logic
;
wr_almost_full_o
:
out
std_logic
;
wr_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
clk_rd_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
rd_empty_o
:
out
std_logic
;
rd_full_o
:
out
std_logic
;
rd_almost_empty_o
:
out
std_logic
;
rd_almost_full_o
:
out
std_logic
;
rd_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
));
end
component
;
begin
-- syn
U_Inferred_FIFO
:
inferred_async_fifo
generic
map
(
g_data_width
=>
g_data_width
,
g_size
=>
g_size
,
g_show_ahead
=>
g_show_ahead
,
g_with_rd_empty
=>
g_with_rd_empty
,
g_with_rd_full
=>
g_with_rd_full
,
g_with_rd_almost_empty
=>
g_with_rd_almost_empty
,
g_with_rd_almost_full
=>
g_with_rd_almost_full
,
g_with_rd_count
=>
g_with_rd_count
,
g_with_wr_empty
=>
g_with_wr_empty
,
g_with_wr_full
=>
g_with_wr_full
,
g_with_wr_almost_empty
=>
g_with_wr_almost_empty
,
g_with_wr_almost_full
=>
g_with_wr_almost_full
,
g_with_wr_count
=>
g_with_wr_count
,
g_almost_empty_threshold
=>
g_almost_empty_threshold
,
g_almost_full_threshold
=>
g_almost_full_threshold
)
port
map
(
rst_n_i
=>
rst_n_i
,
clk_wr_i
=>
clk_wr_i
,
d_i
=>
d_i
,
we_i
=>
we_i
,
wr_empty_o
=>
wr_empty_o
,
wr_full_o
=>
wr_full_o
,
wr_almost_empty_o
=>
wr_almost_empty_o
,
wr_almost_full_o
=>
wr_almost_full_o
,
wr_count_o
=>
wr_count_o
,
clk_rd_i
=>
clk_rd_i
,
q_o
=>
q_o
,
rd_i
=>
rd_i
,
rd_empty_o
=>
rd_empty_o
,
rd_full_o
=>
rd_full_o
,
rd_almost_empty_o
=>
rd_almost_empty_o
,
rd_almost_full_o
=>
rd_almost_full_o
,
rd_count_o
=>
rd_count_o
);
end
syn
;
test/spec/vhdl/general-cores/modules/genrams/generic/generic_sync_fifo.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Parametrizable synchronous FIFO (Xilinx version)
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : generic_sync_fifo.vhd
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2011-01-25
-- Last update: 2012-07-03
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
-- Description: Single-clock FIFO.
-- - configurable data width and size
-- - "show ahead" mode
-- - configurable full/empty/almost full/almost empty/word count signals
-------------------------------------------------------------------------------
-- Copyright (c) 2011 CERN
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2011-01-25 1.0 twlostow Created
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
genram_pkg
.
all
;
entity
generic_sync_fifo
is
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
-- Read-side flag selection
g_with_empty
:
boolean
:
=
true
;
-- with empty flag
g_with_full
:
boolean
:
=
true
;
-- with full flag
g_with_almost_empty
:
boolean
:
=
false
;
g_with_almost_full
:
boolean
:
=
false
;
g_with_count
:
boolean
:
=
false
;
-- with words counter
g_almost_empty_threshold
:
integer
;
-- threshold for almost empty flag
g_almost_full_threshold
:
integer
;
-- threshold for almost full flag
g_register_flag_outputs
:
boolean
:
=
true
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
empty_o
:
out
std_logic
;
full_o
:
out
std_logic
;
almost_empty_o
:
out
std_logic
;
almost_full_o
:
out
std_logic
;
count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
)
);
end
generic_sync_fifo
;
architecture
syn
of
generic_sync_fifo
is
component
inferred_sync_fifo
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
;
g_with_empty
:
boolean
;
g_with_full
:
boolean
;
g_with_almost_empty
:
boolean
;
g_with_almost_full
:
boolean
;
g_with_count
:
boolean
;
g_almost_empty_threshold
:
integer
;
g_almost_full_threshold
:
integer
;
g_register_flag_outputs
:
boolean
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
empty_o
:
out
std_logic
;
full_o
:
out
std_logic
;
almost_empty_o
:
out
std_logic
;
almost_full_o
:
out
std_logic
;
count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
));
end
component
;
begin
-- syn
U_Inferred_FIFO
:
inferred_sync_fifo
generic
map
(
g_data_width
=>
g_data_width
,
g_size
=>
g_size
,
g_show_ahead
=>
g_show_ahead
,
g_with_empty
=>
g_with_empty
,
g_with_full
=>
g_with_full
,
g_with_almost_empty
=>
g_with_almost_empty
,
g_with_almost_full
=>
g_with_almost_full
,
g_with_count
=>
g_with_count
,
g_almost_empty_threshold
=>
g_almost_empty_threshold
,
g_almost_full_threshold
=>
g_almost_full_threshold
,
g_register_flag_outputs
=>
g_register_flag_outputs
)
port
map
(
rst_n_i
=>
rst_n_i
,
clk_i
=>
clk_i
,
d_i
=>
d_i
,
we_i
=>
we_i
,
q_o
=>
q_o
,
rd_i
=>
rd_i
,
empty_o
=>
empty_o
,
full_o
=>
full_o
,
almost_empty_o
=>
almost_empty_o
,
almost_full_o
=>
almost_full_o
,
count_o
=>
count_o
);
end
syn
;
test/spec/vhdl/general-cores/modules/genrams/genram_pkg.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Main package file
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : genram_pkg.vhd
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2011-01-25
-- Last update: 2012-01-24
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
--
-- Copyright (c) 2011 CERN
--
-- 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.gnu.org/licenses/lgpl-2.1.html
--
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2011-01-25 1.0 twlostow Created
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
package
genram_pkg
is
function
f_log2_size
(
A
:
natural
)
return
natural
;
function
f_gen_dummy_vec
(
val
:
std_logic
;
size
:
natural
)
return
std_logic_vector
;
type
t_generic_ram_init
is
array
(
integer
range
<>
,
integer
range
<>
)
of
std_logic
;
-- Generic RAM initialized with nothing.
constant
c_generic_ram_nothing
:
t_generic_ram_init
(
-1
downto
0
,
-1
downto
0
)
:
=
(
others
=>
(
others
=>
'0'
));
-- Single-port synchronous RAM
component
generic_spram
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_with_byte_enable
:
boolean
:
=
false
;
g_init_file
:
string
:
=
""
;
g_addr_conflict_resolution
:
string
:
=
"read_first"
)
;
port
(
rst_n_i
:
in
std_logic
;
clk_i
:
in
std_logic
;
bwe_i
:
in
std_logic_vector
((
g_data_width
+
7
)
/
8-1
downto
0
):
=
f_gen_dummy_vec
(
'1'
,
(
g_data_width
+
7
)
/
8
);
we_i
:
in
std_logic
;
a_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
)
:
=
f_gen_dummy_vec
(
'0'
,
g_data_width
);
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
));
end
component
;
component
generic_simple_dpram
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_with_byte_enable
:
boolean
:
=
false
;
g_addr_conflict_resolution
:
string
:
=
"dont_care"
;
g_init_file
:
string
:
=
"none"
;
g_dual_clock
:
boolean
:
=
true
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clka_i
:
in
std_logic
;
bwea_i
:
in
std_logic_vector
((
g_data_width
+
7
)
/
8
-1
downto
0
)
:
=
f_gen_dummy_vec
(
'1'
,
(
g_data_width
+
7
)
/
8
);
wea_i
:
in
std_logic
;
aa_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
da_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
clkb_i
:
in
std_logic
;
ab_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
qb_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
));
end
component
;
component
generic_dpram
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_with_byte_enable
:
boolean
:
=
false
;
g_addr_conflict_resolution
:
string
:
=
"read_first"
;
g_init_file
:
string
:
=
""
;
g_init_value
:
t_generic_ram_init
:
=
c_generic_ram_nothing
;
g_dual_clock
:
boolean
:
=
true
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clka_i
:
in
std_logic
;
bwea_i
:
in
std_logic_vector
((
g_data_width
+
7
)
/
8-1
downto
0
)
:
=
f_gen_dummy_vec
(
'1'
,
(
g_data_width
+
7
)
/
8
);
wea_i
:
in
std_logic
:
=
'0'
;
aa_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
da_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
)
:
=
f_gen_dummy_vec
(
'0'
,
g_data_width
);
qa_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
clkb_i
:
in
std_logic
;
bweb_i
:
in
std_logic_vector
((
g_data_width
+
7
)
/
8-1
downto
0
)
:
=
f_gen_dummy_vec
(
'1'
,
(
g_data_width
+
7
)
/
8
);
web_i
:
in
std_logic
:
=
'0'
;
ab_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
db_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
)
:
=
f_gen_dummy_vec
(
'0'
,
g_data_width
);
qb_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
));
end
component
;
component
generic_async_fifo
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
g_with_rd_empty
:
boolean
:
=
true
;
g_with_rd_full
:
boolean
:
=
false
;
g_with_rd_almost_empty
:
boolean
:
=
false
;
g_with_rd_almost_full
:
boolean
:
=
false
;
g_with_rd_count
:
boolean
:
=
false
;
g_with_wr_empty
:
boolean
:
=
false
;
g_with_wr_full
:
boolean
:
=
true
;
g_with_wr_almost_empty
:
boolean
:
=
false
;
g_with_wr_almost_full
:
boolean
:
=
false
;
g_with_wr_count
:
boolean
:
=
false
;
g_almost_empty_threshold
:
integer
:
=
0
;
g_almost_full_threshold
:
integer
:
=
0
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_wr_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
wr_empty_o
:
out
std_logic
;
wr_full_o
:
out
std_logic
;
wr_almost_empty_o
:
out
std_logic
;
wr_almost_full_o
:
out
std_logic
;
wr_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
clk_rd_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
rd_empty_o
:
out
std_logic
;
rd_full_o
:
out
std_logic
;
rd_almost_empty_o
:
out
std_logic
;
rd_almost_full_o
:
out
std_logic
;
rd_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
));
end
component
;
component
generic_sync_fifo
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
g_with_empty
:
boolean
:
=
true
;
g_with_full
:
boolean
:
=
true
;
g_with_almost_empty
:
boolean
:
=
false
;
g_with_almost_full
:
boolean
:
=
false
;
g_with_count
:
boolean
:
=
false
;
g_almost_empty_threshold
:
integer
:
=
0
;
g_almost_full_threshold
:
integer
:
=
0
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
empty_o
:
out
std_logic
;
full_o
:
out
std_logic
;
almost_empty_o
:
out
std_logic
;
almost_full_o
:
out
std_logic
;
count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
));
end
component
;
component
generic_shiftreg_fifo
generic
(
g_data_width
:
integer
;
g_size
:
integer
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
full_o
:
out
std_logic
;
almost_full_o
:
out
std_logic
;
q_valid_o
:
out
std_logic
);
end
component
;
end
genram_pkg
;
package
body
genram_pkg
is
function
f_log2_size
(
A
:
natural
)
return
natural
is
begin
for
I
in
1
to
64
loop
-- Works for up to 64 bits
if
(
2
**
I
>=
A
)
then
return
(
I
);
end
if
;
end
loop
;
return
(
63
);
end
function
f_log2_size
;
function
f_gen_dummy_vec
(
val
:
std_logic
;
size
:
natural
)
return
std_logic_vector
is
variable
tmp
:
std_logic_vector
(
size
-1
downto
0
);
begin
for
i
in
0
to
size
-1
loop
tmp
(
i
)
:
=
val
;
end
loop
;
-- i
return
tmp
;
end
f_gen_dummy_vec
;
end
genram_pkg
;
test/spec/vhdl/general-cores/modules/genrams/inferred_async_fifo.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Parametrizable asynchronous FIFO (Generic version)
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : generic_async_fifo.vhd
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2011-01-25
-- Last update: 2012-07-13
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
-- Description: Dual-clock asynchronous FIFO.
-- - configurable data width and size
-- - configurable full/empty/almost full/almost empty/word count signals
-------------------------------------------------------------------------------
-- Copyright (c) 2011 CERN
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2011-01-25 1.0 twlostow Created
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
genram_pkg
.
all
;
entity
inferred_async_fifo
is
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
-- Read-side flag selection
g_with_rd_empty
:
boolean
:
=
true
;
-- with empty flag
g_with_rd_full
:
boolean
:
=
false
;
-- with full flag
g_with_rd_almost_empty
:
boolean
:
=
false
;
g_with_rd_almost_full
:
boolean
:
=
false
;
g_with_rd_count
:
boolean
:
=
false
;
-- with words counter
g_with_wr_empty
:
boolean
:
=
false
;
g_with_wr_full
:
boolean
:
=
true
;
g_with_wr_almost_empty
:
boolean
:
=
false
;
g_with_wr_almost_full
:
boolean
:
=
false
;
g_with_wr_count
:
boolean
:
=
false
;
g_almost_empty_threshold
:
integer
;
-- threshold for almost empty flag
g_almost_full_threshold
:
integer
-- threshold for almost full flag
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
-- write port
clk_wr_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
wr_empty_o
:
out
std_logic
;
wr_full_o
:
out
std_logic
;
wr_almost_empty_o
:
out
std_logic
;
wr_almost_full_o
:
out
std_logic
;
wr_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
-- read port
clk_rd_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
rd_empty_o
:
out
std_logic
;
rd_full_o
:
out
std_logic
;
rd_almost_empty_o
:
out
std_logic
;
rd_almost_full_o
:
out
std_logic
;
rd_count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
)
);
end
inferred_async_fifo
;
architecture
syn
of
inferred_async_fifo
is
function
f_bin2gray
(
bin
:
unsigned
)
return
unsigned
is
begin
return
bin
(
bin
'left
)
&
(
bin
(
bin
'left
-1
downto
0
)
xor
bin
(
bin
'left
downto
1
));
end
f_bin2gray
;
function
f_gray2bin
(
gray
:
unsigned
)
return
unsigned
is
variable
bin
:
unsigned
(
gray
'left
downto
0
);
begin
-- gray to binary
for
i
in
0
to
gray
'left
loop
bin
(
i
)
:
=
'0'
;
for
j
in
i
to
gray
'left
loop
bin
(
i
)
:
=
bin
(
i
)
xor
gray
(
j
);
end
loop
;
-- j
end
loop
;
-- i
return
bin
;
end
f_gray2bin
;
subtype
t_counter
is
unsigned
(
f_log2_size
(
g_size
)
downto
0
);
type
t_counter_block
is
record
bin
,
bin_next
,
gray
,
gray_next
:
t_counter
;
bin_x
,
gray_x
,
gray_xm
:
t_counter
;
end
record
;
type
t_mem_type
is
array
(
0
to
g_size
-1
)
of
std_logic_vector
(
g_data_width
-1
downto
0
);
signal
mem
:
t_mem_type
;
signal
rcb
,
wcb
:
t_counter_block
;
attribute
ASYNC_REG
:
string
;
attribute
ASYNC_REG
of
wcb
:
signal
is
"TRUE"
;
attribute
ASYNC_REG
of
rcb
:
signal
is
"TRUE"
;
signal
full_int
,
empty_int
:
std_logic
;
signal
almost_full_int
,
almost_empty_int
:
std_logic
;
signal
going_full
:
std_logic
;
signal
wr_count
,
rd_count
:
t_counter
;
signal
we
:
std_logic
;
begin
-- syn
we
<=
we_i
and
not
full_int
;
p_mem_write
:
process
(
clk_wr_i
)
begin
if
rising_edge
(
clk_wr_i
)
then
if
(
we
=
'1'
)
then
mem
(
to_integer
(
wcb
.
bin
(
wcb
.
bin
'left
-1
downto
0
)))
<=
d_i
;
end
if
;
end
if
;
end
process
;
p_mem_read
:
process
(
clk_rd_i
)
begin
if
rising_edge
(
clk_rd_i
)
then
if
(
rd_i
=
'1'
and
empty_int
=
'0'
)
then
q_o
<=
mem
(
to_integer
(
rcb
.
bin
(
rcb
.
bin
'left
-1
downto
0
)));
end
if
;
end
if
;
end
process
;
wcb
.
bin_next
<=
wcb
.
bin
+
1
;
wcb
.
gray_next
<=
f_bin2gray
(
wcb
.
bin_next
);
p_write_ptr
:
process
(
clk_wr_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
wcb
.
bin
<=
(
others
=>
'0'
);
wcb
.
gray
<=
(
others
=>
'0'
);
elsif
rising_edge
(
clk_wr_i
)
then
if
(
we_i
=
'1'
and
full_int
=
'0'
)
then
wcb
.
bin
<=
wcb
.
bin_next
;
wcb
.
gray
<=
wcb
.
gray_next
;
end
if
;
end
if
;
end
process
;
rcb
.
bin_next
<=
rcb
.
bin
+
1
;
rcb
.
gray_next
<=
f_bin2gray
(
rcb
.
bin_next
);
p_read_ptr
:
process
(
clk_rd_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
rcb
.
bin
<=
(
others
=>
'0'
);
rcb
.
gray
<=
(
others
=>
'0'
);
elsif
rising_edge
(
clk_rd_i
)
then
if
(
rd_i
=
'1'
and
empty_int
=
'0'
)
then
rcb
.
bin
<=
rcb
.
bin_next
;
rcb
.
gray
<=
rcb
.
gray_next
;
end
if
;
end
if
;
end
process
;
p_sync_read_ptr
:
process
(
clk_wr_i
)
begin
if
rising_edge
(
clk_wr_i
)
then
rcb
.
gray_xm
<=
rcb
.
gray
;
rcb
.
gray_x
<=
rcb
.
gray_xm
;
end
if
;
end
process
;
p_sync_write_ptr
:
process
(
clk_rd_i
)
begin
if
rising_edge
(
clk_rd_i
)
then
wcb
.
gray_xm
<=
wcb
.
gray
;
wcb
.
gray_x
<=
wcb
.
gray_xm
;
end
if
;
end
process
;
wcb
.
bin_x
<=
f_gray2bin
(
wcb
.
gray_x
);
rcb
.
bin_x
<=
f_gray2bin
(
rcb
.
gray_x
);
p_gen_empty
:
process
(
clk_rd_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
empty_int
<=
'1'
;
elsif
rising_edge
(
clk_rd_i
)
then
if
(
rcb
.
gray
=
wcb
.
gray_x
or
(
rd_i
=
'1'
and
(
wcb
.
gray_x
=
rcb
.
gray_next
)))
then
empty_int
<=
'1'
;
else
empty_int
<=
'0'
;
end
if
;
end
if
;
end
process
;
p_gen_going_full
:
process
(
we_i
,
wcb
,
rcb
)
begin
if
((
wcb
.
bin
(
wcb
.
bin
'left
-1
downto
0
)
=
rcb
.
bin_x
(
rcb
.
bin_x
'left
-1
downto
0
))
and
(
wcb
.
bin
(
wcb
.
bin
'left
)
/=
rcb
.
bin_x
(
wcb
.
bin_x
'left
)))
then
going_full
<=
'1'
;
elsif
(
we_i
=
'1'
and
(
wcb
.
bin_next
(
wcb
.
bin
'left
-1
downto
0
)
=
rcb
.
bin_x
(
rcb
.
bin_x
'left
-1
downto
0
))
and
(
wcb
.
bin_next
(
wcb
.
bin
'left
)
/=
rcb
.
bin_x
(
rcb
.
bin_x
'left
)))
then
going_full
<=
'1'
;
else
going_full
<=
'0'
;
end
if
;
end
process
;
p_register_full
:
process
(
clk_wr_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
full_int
<=
'0'
;
elsif
rising_edge
(
clk_wr_i
)
then
full_int
<=
going_full
;
end
if
;
end
process
;
wr_full_o
<=
full_int
;
rd_empty_o
<=
empty_int
;
p_reg_almost_full
:
process
(
clk_wr_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
almost_full_int
<=
'0'
;
elsif
rising_edge
(
clk_wr_i
)
then
wr_count
<=
wcb
.
bin
-
rcb
.
bin_x
;
if
(
wr_count
>=
g_almost_full_threshold
)
then
almost_full_int
<=
'1'
;
else
almost_full_int
<=
'0'
;
end
if
;
end
if
;
end
process
;
p_reg_almost_empty
:
process
(
clk_rd_i
,
rst_n_i
)
begin
if
rst_n_i
=
'0'
then
almost_empty_int
<=
'1'
;
elsif
rising_edge
(
clk_rd_i
)
then
rd_count
<=
wcb
.
bin_x
-
rcb
.
bin
;
if
(
rd_count
<=
g_almost_empty_threshold
)
then
almost_empty_int
<=
'1'
;
else
almost_empty_int
<=
'0'
;
end
if
;
end
if
;
end
process
;
rd_almost_empty_o
<=
almost_empty_int
;
wr_almost_full_o
<=
almost_full_int
;
wr_count_o
<=
std_logic_vector
(
wr_count
(
f_log2_size
(
g_size
)
-1
downto
0
));
rd_count_o
<=
std_logic_vector
(
rd_count
(
f_log2_size
(
g_size
)
-1
downto
0
));
end
syn
;
test/spec/vhdl/general-cores/modules/genrams/inferred_sync_fifo.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Parametrizable synchronous FIFO (Generic version)
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : generic_sync_fifo_std.vhd
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2011-01-25
-- Last update: 2012-09-18
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
-- Description: Single-clock FIFO.
-- - configurable data width and size
-- - configurable full/empty/almost full/almost empty/word count signals
-------------------------------------------------------------------------------
-- Copyright (c) 2011 CERN
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2011-01-25 1.0 twlostow Created
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
work
.
genram_pkg
.
all
;
entity
inferred_sync_fifo
is
generic
(
g_data_width
:
natural
;
g_size
:
natural
;
g_show_ahead
:
boolean
:
=
false
;
-- Read-side flag selection
g_with_empty
:
boolean
:
=
true
;
-- with empty flag
g_with_full
:
boolean
:
=
true
;
-- with full flag
g_with_almost_empty
:
boolean
:
=
false
;
g_with_almost_full
:
boolean
:
=
false
;
g_with_count
:
boolean
:
=
false
;
-- with words counter
g_almost_empty_threshold
:
integer
:
=
0
;
-- threshold for almost empty flag
g_almost_full_threshold
:
integer
:
=
0
;
-- threshold for almost full flag
g_register_flag_outputs
:
boolean
:
=
true
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
clk_i
:
in
std_logic
;
d_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
we_i
:
in
std_logic
;
q_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
);
rd_i
:
in
std_logic
;
empty_o
:
out
std_logic
;
full_o
:
out
std_logic
;
almost_empty_o
:
out
std_logic
;
almost_full_o
:
out
std_logic
;
count_o
:
out
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
)
);
end
inferred_sync_fifo
;
architecture
syn
of
inferred_sync_fifo
is
constant
c_pointer_width
:
integer
:
=
f_log2_size
(
g_size
);
signal
rd_ptr
,
wr_ptr
,
wr_ptr_d0
,
rd_ptr_muxed
:
unsigned
(
c_pointer_width
-1
downto
0
);
signal
usedw
:
unsigned
(
c_pointer_width
downto
0
);
signal
full
,
empty
:
std_logic
;
signal
q_int
:
std_logic_vector
(
g_data_width
-1
downto
0
);
signal
we
:
std_logic
;
signal
guard_bit
:
std_logic
;
signal
q_reg
,
q_comb
:
std_logic_vector
(
g_data_width
-1
downto
0
);
begin
-- syn
--assert g_show_ahead = false report "Show ahead mode not implemented (yet). Sorry" severity failure;
we
<=
we_i
and
not
full
;
U_FIFO_Ram
:
generic_dpram
generic
map
(
g_data_width
=>
g_data_width
,
g_size
=>
g_size
,
g_with_byte_enable
=>
false
,
g_addr_conflict_resolution
=>
"read_first"
,
g_dual_clock
=>
false
)
port
map
(
rst_n_i
=>
rst_n_i
,
clka_i
=>
clk_i
,
wea_i
=>
we
,
aa_i
=>
std_logic_vector
(
wr_ptr
(
c_pointer_width
-1
downto
0
)),
da_i
=>
d_i
,
clkb_i
=>
'0'
,
ab_i
=>
std_logic_vector
(
rd_ptr_muxed
(
c_pointer_width
-1
downto
0
)),
qb_o
=>
q_comb
);
p_output_reg
:
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rd_i
=
'1'
then
q_reg
<=
q_comb
;
end
if
;
end
if
;
end
process
;
process
(
rd_ptr
,
rd_i
)
begin
if
(
rd_i
=
'1'
and
g_show_ahead
)
then
rd_ptr_muxed
<=
rd_ptr
+
1
;
elsif
((
rd_i
=
'1'
and
not
g_show_ahead
)
or
(
g_show_ahead
))
then
rd_ptr_muxed
<=
rd_ptr
;
else
rd_ptr_muxed
<=
rd_ptr
-
1
;
end
if
;
end
process
;
-- q_o <= q_comb when g_show_ahead = true else q_reg;
q_o
<=
q_comb
;
p_pointers
:
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
wr_ptr
<=
(
others
=>
'0'
);
rd_ptr
<=
(
others
=>
'0'
);
else
if
(
we_i
=
'1'
and
full
=
'0'
)
then
wr_ptr
<=
wr_ptr
+
1
;
end
if
;
if
(
rd_i
=
'1'
and
empty
=
'0'
)
then
rd_ptr
<=
rd_ptr
+
1
;
end
if
;
end
if
;
end
if
;
end
process
;
gen_comb_flags_showahead
:
if
(
g_show_ahead
=
true
)
generate
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
((
rd_ptr
+
1
=
wr_ptr
and
rd_i
=
'1'
)
or
(
rd_ptr
=
wr_ptr
))
then
empty
<=
'1'
;
else
empty
<=
'0'
;
end
if
;
end
if
;
end
process
;
full
<=
'1'
when
(
wr_ptr
+
1
=
rd_ptr
)
else
'0'
;
end
generate
gen_comb_flags_showahead
;
gen_comb_flags
:
if
(
g_register_flag_outputs
=
false
and
g_show_ahead
=
false
)
generate
empty
<=
'1'
when
(
wr_ptr
=
rd_ptr
and
guard_bit
=
'0'
)
else
'0'
;
full
<=
'1'
when
(
wr_ptr
=
rd_ptr
and
guard_bit
=
'1'
)
else
'0'
;
p_guard_bit
:
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
guard_bit
<=
'0'
;
elsif
(
wr_ptr
+
1
=
rd_ptr
and
we_i
=
'1'
)
then
guard_bit
<=
'1'
;
elsif
(
rd_i
=
'1'
)
then
guard_bit
<=
'0'
;
end
if
;
end
if
;
end
process
;
end
generate
gen_comb_flags
;
gen_registered_flags
:
if
(
g_register_flag_outputs
=
true
and
g_show_ahead
=
false
)
generate
p_reg_flags
:
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
(
rst_n_i
=
'0'
)
then
full
<=
'0'
;
empty
<=
'1'
;
else
if
(
usedw
=
1
and
rd_i
=
'1'
and
we_i
=
'0'
)
then
empty
<=
'1'
;
elsif
(
we_i
=
'1'
and
rd_i
=
'0'
)
then
empty
<=
'0'
;
end
if
;
if
(
usedw
=
g_size
-2
and
we_i
=
'1'
and
rd_i
=
'0'
)
then
full
<=
'1'
;
elsif
(
usedw
=
g_size
-1
and
rd_i
=
'1'
and
we_i
=
'0'
)
then
full
<=
'0'
;
end
if
;
end
if
;
end
if
;
end
process
;
end
generate
gen_registered_flags
;
gen_with_word_counter
:
if
(
g_with_count
or
g_with_almost_empty
or
g_with_almost_full
or
g_register_flag_outputs
)
generate
p_usedw_counter
:
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
usedw
<=
(
others
=>
'0'
);
else
if
(
we_i
=
'1'
and
rd_i
=
'0'
and
full
=
'0'
)
then
usedw
<=
usedw
+
1
;
elsif
(
we_i
=
'0'
and
rd_i
=
'1'
and
empty
=
'0'
)
then
usedw
<=
usedw
-
1
;
end
if
;
end
if
;
end
if
;
end
process
;
count_o
<=
std_logic_vector
(
usedw
(
c_pointer_width
-1
downto
0
));
end
generate
gen_with_word_counter
;
gen_with_almost_full
:
if
(
g_with_almost_full
)
generate
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
almost_full_o
<=
'0'
;
else
if
(
usedw
=
g_almost_full_threshold
-1
)
then
if
(
we_i
=
'1'
and
rd_i
=
'0'
)
then
almost_full_o
<=
'1'
;
elsif
(
rd_i
=
'1'
and
we_i
=
'0'
)
then
almost_full_o
<=
'0'
;
end
if
;
end
if
;
end
if
;
end
if
;
end
process
;
end
generate
gen_with_almost_full
;
gen_with_almost_empty
:
if
(
g_with_almost_empty
)
generate
process
(
clk_i
)
begin
if
rising_edge
(
clk_i
)
then
if
rst_n_i
=
'0'
then
almost_empty_o
<=
'1'
;
else
if
(
usedw
=
g_almost_empty_threshold
+
1
)
then
if
(
rd_i
=
'1'
and
we_i
=
'0'
)
then
almost_empty_o
<=
'1'
;
elsif
(
we_i
=
'1'
and
rd_i
=
'0'
)
then
almost_empty_o
<=
'0'
;
end
if
;
end
if
;
end
if
;
end
if
;
end
process
;
end
generate
gen_with_almost_empty
;
full_o
<=
full
;
empty_o
<=
empty
;
end
syn
;
test/spec/vhdl/general-cores/modules/genrams/xilinx/Manifest.py
deleted
100644 → 0
View file @
f584b6c1
files
=
[
"generic_dpram.vhd"
,
"generic_dpram_sameclock.vhd"
,
"generic_dpram_dualclock.vhd"
,
"generic_simple_dpram.vhd"
,
"generic_spram.vhd"
]
test/spec/vhdl/general-cores/modules/genrams/xilinx/generic_simple_dpram.vhd
deleted
100644 → 0
View file @
f584b6c1
-------------------------------------------------------------------------------
-- Title : Parametrizable dual-port synchronous RAM (Xilinx version)
-- Project : Generics RAMs and FIFOs collection
-------------------------------------------------------------------------------
-- File : generic_simple_dpram.vhd
-- Author : Wesley W. Terpstra
-- Company : GSI
-- Created : 2013-03-04
-- Last update: 2013-03-04
-- Platform :
-- Standard : VHDL'93
-------------------------------------------------------------------------------
-- Description: True dual-port synchronous RAM for Xilinx FPGAs with:
-- - configurable address and data bus width
-- - byte-addressing mode (data bus width restricted to multiple of 8 bits)
-- Todo:
-- - loading initial contents from file
-- - add support for read-first/write-first address conflict resulution (only
-- supported by Xilinx in VHDL templates)
-------------------------------------------------------------------------------
-- Copyright (c) 2011 CERN
-------------------------------------------------------------------------------
-- Revisions :
-- Date Version Author Description
-- 2013-03-04 1.0 wterpstra Initial version: wrapper to generic_dpram
-------------------------------------------------------------------------------
library
ieee
;
use
ieee
.
std_logic_1164
.
all
;
use
ieee
.
numeric_std
.
all
;
use
std
.
textio
.
all
;
library
work
;
use
work
.
genram_pkg
.
all
;
use
work
.
memory_loader_pkg
.
all
;
entity
generic_simple_dpram
is
generic
(
-- standard parameters
g_data_width
:
natural
:
=
32
;
g_size
:
natural
:
=
16384
;
g_with_byte_enable
:
boolean
:
=
false
;
g_addr_conflict_resolution
:
string
:
=
"read_first"
;
g_init_file
:
string
:
=
""
;
g_dual_clock
:
boolean
:
=
true
;
g_fail_if_file_not_found
:
boolean
:
=
true
);
port
(
rst_n_i
:
in
std_logic
:
=
'1'
;
-- synchronous reset, active LO
-- Port A
clka_i
:
in
std_logic
;
bwea_i
:
in
std_logic_vector
((
g_data_width
+
7
)
/
8-1
downto
0
);
wea_i
:
in
std_logic
;
aa_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
da_i
:
in
std_logic_vector
(
g_data_width
-1
downto
0
);
-- Port B
clkb_i
:
in
std_logic
;
ab_i
:
in
std_logic_vector
(
f_log2_size
(
g_size
)
-1
downto
0
);
qb_o
:
out
std_logic_vector
(
g_data_width
-1
downto
0
)
);
end
generic_simple_dpram
;
architecture
syn
of
generic_simple_dpram
is
begin
-- Works well enough until a Xilinx guru can optimize it.
true_dp
:
generic_dpram
generic
map
(
g_data_width
=>
g_data_width
,
g_size
=>
g_size
,
g_with_byte_enable
=>
g_with_byte_enable
,
g_addr_conflict_resolution
=>
g_addr_conflict_resolution
,
g_init_file
=>
g_init_file
,
g_dual_clock
=>
g_dual_clock
)
port
map
(
rst_n_i
=>
rst_n_i
,
clka_i
=>
clka_i
,
bwea_i
=>
bwea_i
,
wea_i
=>
wea_i
,
aa_i
=>
aa_i
,
da_i
=>
da_i
,
qa_o
=>
open
,
clkb_i
=>
clkb_i
,
bweb_i
=>
(
others
=>
'0'
),
web_i
=>
'0'
,
ab_i
=>
ab_i
,
db_i
=>
(
others
=>
'0'
),
qb_o
=>
qb_o
);
end
syn
;
test/spec/vhdl/spec_pts_ddr/rtl/Manifest.py
View file @
542722f7
...
...
@@ -3,19 +3,12 @@ files = [
"sdb_meta_pkg.vhd"
]
fetchto
=
"../../ip_cores"
modules
=
{
"local"
:
[
"../../common/rtl"
],
"svn"
:
[
"http://svn.ohwr.org/gn4124-core/trunk/hdl/gn4124core/rtl"
,
"http://svn.ohwr.org/gn4124-core/trunk/hdl/common/rtl"
],
"git"
:
[
"git://ohwr.org/hdl-core-lib/general-cores.git::sdb_extension"
,
"git://ohwr.org/hdl-core-lib/ddr3-sp6-core.git::spec_bank3_32b_32b"
,
"git://ohwr.org/hdl-core-lib/wr-cores.git"
]
}
"local"
:
[
"../../common/rtl"
,
"../../ip-cores/general-cores"
,
"../../ip-cores/gn4124-core"
,
"../../ip-cores/wr-cores"
,
"../../ip-cores/ddr3-sp6-core"
,
]
}
\ No newline at end of file
test/spec/vhdl/spec_pts_ddr/spec_pts_ddr.ucf
deleted
100644 → 0
View file @
f584b6c1
This diff is collapsed.
Click to expand it.
test/spec/vhdl/spec_pts_ddr/syn/Makefile
View file @
542722f7
This diff is collapsed.
Click to expand it.
test/spec/vhdl/spec_pts_ddr/syn/Manifest.py
View file @
542722f7
board
=
"spec"
target
=
"xilinx"
action
=
"synthesis"
syn_device
=
"xc6slx
45
t"
syn_device
=
"xc6slx
150
t"
syn_grade
=
"-3"
syn_package
=
"fgg484"
syn_top
=
"spec_pts_ddr"
syn_project
=
"spec_pts_ddr.xise"
syn_tool
=
"ise"
files
=
[
"
../
spec_pts_ddr.ucf"
]
files
=
[
"spec_pts_ddr.ucf"
]
modules
=
{
"local"
:
"../rtl"
}
ctrls
=
[
"bank3_32b_32b"
]
\ No newline at end of file
test/spec/vhdl/spec_pts_ddr/syn/spec_pts_ddr.xise
View file @
542722f7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment