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

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/tags/w11a_V0.61/rtl/bplib/s3board
    from Rev 25 to Rev 26
    Reverse comparison

Rev 25 → Rev 26

/tb/Makefile
0,0 → 1,44
# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $
#
# Revision History:
# Date Rev Version Comment
# 2014-07-27 545 1.3.1 make reference board configurable via XTW_BOARD
# 2011-08-13 405 1.3 use includes from rtl/make
# 2010-05-16 291 1.2.2 rename tb_memctl_s3sram->tb_s3_sram_memctl
# 2010-05-01 286 1.2.1 add tb_s3board_usp_dummy
# 2009-11-21 252 1.2 add ISim support
# 2007-11-26 98 1.1 use make includes
# 2007-09-23 84 1.0 Initial version
#
EXE_all = tb_s3board_dummy
EXE_all += tb_s3board_fusp_dummy
EXE_all += tb_s3_sram_memctl
#
ifndef XTW_BOARD
XTW_BOARD=s3board
endif
include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk
#
.PHONY : all all_ssim all_tsim clean
#
all : $(EXE_all)
all_ssim : $(EXE_all:=_ssim)
all_tsim : $(EXE_all:=_tsim)
#
clean : ise_clean ghdl_clean isim_clean
#
#-----
#
include $(RETROBASE)/rtl/make/generic_ghdl.mk
include $(RETROBASE)/rtl/make/generic_isim.mk
include $(RETROBASE)/rtl/make/generic_xflow.mk
#
VBOM_all = $(wildcard *.vbom)
#
ifndef DONTINCDEP
include $(VBOM_all:.vbom=.dep_xst)
include $(VBOM_all:.vbom=.dep_ghdl)
include $(VBOM_all:.vbom=.dep_isim)
include $(wildcard *.o.dep_ghdl)
endif
#
/tb/tb_s3board_fusp.vhd
0,0 → 1,233
-- $Id: tb_s3board_fusp.vhd 476 2013-01-26 22:23:53Z mueller $
--
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- Software Foundation, either version 2, or at your option any later version.
--
-- This program 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 General Public License
-- for complete details.
--
------------------------------------------------------------------------------
-- Module Name: tb_s3board_fusp - sim
-- Description: Test bench for s3board (base+fusp)
--
-- Dependencies: simlib/simclk
-- simlib/simclkcnt
-- rlink/tb/tbcore_rlink
-- tb_s3board_core
-- s3board_fusp_aif [UUT]
-- serport/serport_uart_rxtx
--
-- To test: generic, any s3board_fusp_aif target
--
-- Target Devices: generic
-- Tool versions: xst 8.2, 9.1, 9.2, 11.4, 12.1, 13.1; ghdl 0.18-0.29
-- Revision History:
-- Date Rev Version Comment
-- 2011-12-23 444 3.1 new system clock scheme, new tbcore_rlink iface
-- 2011-11-19 427 3.0.1 now numeric_std clean
-- 2010-12-30 351 3.0 use rlink/tb now
-- 2010-11-06 336 1.0.4 rename input pin CLK -> I_CLK50
-- 2010-05-21 292 1.0.3 rename _PM1_ -> _FUSP_
-- 2010-05-16 291 1.0.2 rename tb_s3board_usp->tb_s3board_fusp
-- 2010-05-02 287 1.0.1 add sbaddr_portsel def, now sbus addr 8
-- 2010-05-01 286 1.0 Initial version (derived from tb_s3board)
------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_textio.all;
use std.textio.all;
 
use work.slvtypes.all;
use work.rlinklib.all;
use work.rlinktblib.all;
use work.serportlib.all;
use work.s3boardlib.all;
use work.simlib.all;
use work.simbus.all;
 
entity tb_s3board_fusp is
end tb_s3board_fusp;
 
architecture sim of tb_s3board_fusp is
signal CLK : slbit := '0';
signal CLK_STOP : slbit := '0';
signal CLK_CYCLE : integer := 0;
 
signal RESET : slbit := '0';
signal CLKDIV : slv2 := "00"; -- run with 1 clocks / bit !!
signal RXDATA : slv8 := (others=>'0');
signal RXVAL : slbit := '0';
signal RXERR : slbit := '0';
signal RXACT : slbit := '0';
signal TXDATA : slv8 := (others=>'0');
signal TXENA : slbit := '0';
signal TXBUSY : slbit := '0';
 
signal RX_HOLD : slbit := '0';
 
signal I_RXD : slbit := '1';
signal O_TXD : slbit := '1';
signal I_SWI : slv8 := (others=>'0');
signal I_BTN : slv4 := (others=>'0');
signal O_LED : slv8 := (others=>'0');
signal O_ANO_N : slv4 := (others=>'0');
signal O_SEG_N : slv8 := (others=>'0');
 
signal O_MEM_CE_N : slv2 := (others=>'1');
signal O_MEM_BE_N : slv4 := (others=>'1');
signal O_MEM_WE_N : slbit := '1';
signal O_MEM_OE_N : slbit := '1';
signal O_MEM_ADDR : slv18 := (others=>'Z');
signal IO_MEM_DATA : slv32 := (others=>'0');
 
signal O_FUSP_RTS_N : slbit := '0';
signal I_FUSP_CTS_N : slbit := '0';
signal I_FUSP_RXD : slbit := '1';
signal O_FUSP_TXD : slbit := '1';
 
signal UART_RESET : slbit := '0';
signal UART_RXD : slbit := '1';
signal UART_TXD : slbit := '1';
signal CTS_N : slbit := '0';
signal RTS_N : slbit := '0';
signal R_PORTSEL : slbit := '0';
 
constant sbaddr_portsel: slv8 := slv(to_unsigned( 8,8));
 
constant clock_period : time := 20 ns;
constant clock_offset : time := 200 ns;
 
begin
 
CLKGEN : simclk
generic map (
PERIOD => clock_period,
OFFSET => clock_offset)
port map (
CLK => CLK,
CLK_STOP => CLK_STOP
);
CLKCNT : simclkcnt port map (CLK => CLK, CLK_CYCLE => CLK_CYCLE);
 
TBCORE : tbcore_rlink
port map (
CLK => CLK,
CLK_STOP => CLK_STOP,
RX_DATA => TXDATA,
RX_VAL => TXENA,
RX_HOLD => RX_HOLD,
TX_DATA => RXDATA,
TX_ENA => RXVAL
);
 
RX_HOLD <= TXBUSY or RTS_N; -- back preasure for data flow to tb
S3CORE : entity work.tb_s3board_core
port map (
I_SWI => I_SWI,
I_BTN => I_BTN,
O_MEM_CE_N => O_MEM_CE_N,
O_MEM_BE_N => O_MEM_BE_N,
O_MEM_WE_N => O_MEM_WE_N,
O_MEM_OE_N => O_MEM_OE_N,
O_MEM_ADDR => O_MEM_ADDR,
IO_MEM_DATA => IO_MEM_DATA
);
 
UUT : s3board_fusp_aif
port map (
I_CLK50 => CLK,
I_RXD => I_RXD,
O_TXD => O_TXD,
I_SWI => I_SWI,
I_BTN => I_BTN,
O_LED => O_LED,
O_ANO_N => O_ANO_N,
O_SEG_N => O_SEG_N,
O_MEM_CE_N => O_MEM_CE_N,
O_MEM_BE_N => O_MEM_BE_N,
O_MEM_WE_N => O_MEM_WE_N,
O_MEM_OE_N => O_MEM_OE_N,
O_MEM_ADDR => O_MEM_ADDR,
IO_MEM_DATA => IO_MEM_DATA,
O_FUSP_RTS_N => O_FUSP_RTS_N,
I_FUSP_CTS_N => I_FUSP_CTS_N,
I_FUSP_RXD => I_FUSP_RXD,
O_FUSP_TXD => O_FUSP_TXD
);
 
UART : serport_uart_rxtx
generic map (
CDWIDTH => CLKDIV'length)
port map (
CLK => CLK,
RESET => UART_RESET,
CLKDIV => CLKDIV,
RXSD => UART_RXD,
RXDATA => RXDATA,
RXVAL => RXVAL,
RXERR => RXERR,
RXACT => RXACT,
TXSD => UART_TXD,
TXDATA => TXDATA,
TXENA => TXENA,
TXBUSY => TXBUSY
);
 
proc_port_mux: process (R_PORTSEL, UART_TXD, CTS_N,
O_TXD, O_FUSP_TXD, O_FUSP_RTS_N)
begin
 
if R_PORTSEL = '0' then -- use main board rs232, no flow cntl
I_RXD <= UART_TXD; -- write port 0 inputs
UART_RXD <= O_TXD; -- get port 0 outputs
RTS_N <= '0';
I_FUSP_RXD <= '1'; -- port 1 inputs to idle state
I_FUSP_CTS_N <= '0';
else -- otherwise use pmod1 rs232
I_FUSP_RXD <= UART_TXD; -- write port 1 inputs
I_FUSP_CTS_N <= CTS_N;
UART_RXD <= O_FUSP_TXD; -- get port 1 outputs
RTS_N <= O_FUSP_RTS_N;
I_RXD <= '1'; -- port 0 inputs to idle state
end if;
end process proc_port_mux;
 
proc_moni: process
variable oline : line;
begin
loop
wait until rising_edge(CLK);
 
if RXERR = '1' then
writetimestamp(oline, CLK_CYCLE, " : seen RXERR=1");
writeline(output, oline);
end if;
end loop;
 
end process proc_moni;
 
proc_simbus: process (SB_VAL)
begin
if SB_VAL'event and to_x01(SB_VAL)='1' then
if SB_ADDR = sbaddr_portsel then
R_PORTSEL <= to_x01(SB_DATA(0));
end if;
end if;
end process proc_simbus;
 
end sim;
/tb/tb_s3board_fusp.vbom
0,0 → 1,22
# Not meant for direct top level usage. Used with
# tb_s3board_fusp_(....)[_ssim].vbom and config
# lines to generate the different cases.
#
# libs
../../../vlib/slvtypes.vhd
../../../vlib/rlink/rlinklib.vbom
../../../vlib/rlink/tb/rlinktblib.vhd
../../../vlib/serport/serportlib.vbom
../s3boardlib.vbom
../../../vlib/simlib/simlib.vhd
../../../vlib/simlib/simbus.vhd
# components
../../../vlib/simlib/simclk.vbom
../../../vlib/simlib/simclkcnt.vbom
../../../vlib/rlink/tb/tbcore_rlink.vbom
tb_s3board_core.vbom
../../../vlib/serport/serport_uart_rxtx.vbom
${s3board_fusp_aif := s3board_fusp_dummy.vbom}
# design
tb_s3board_fusp.vhd
@top:tb_s3board_fusp
/tb/tb_s3board_core.vhd
0,0 → 1,101
-- $Id: tb_s3board_core.vhd 476 2013-01-26 22:23:53Z mueller $
--
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- Software Foundation, either version 2, or at your option any later version.
--
-- This program 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 General Public License
-- for complete details.
--
------------------------------------------------------------------------------
-- Module Name: tb_s3board_core - sim
-- Description: Test bench for s3board - core device handling
--
-- Dependencies: vlib/parts/issi/is61lv25616al
--
-- To test: generic, any s3board target
--
-- Target Devices: generic
-- Tool versions: xst 11.4, 13.1; ghdl 0.26-0.29
-- Revision History:
-- Date Rev Version Comment
-- 2011-11-19 427 1.0.2 now numeric_std clean
-- 2010-05-02 287 1.0.1 add sbaddr_(swi|btn) defs, now sbus addr 16,17
-- 2010-04-24 282 1.0 Initial version (from vlib/s3board/tb/tb_s3board)
------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_textio.all;
use std.textio.all;
 
use work.slvtypes.all;
use work.serportlib.all;
use work.simbus.all;
 
entity tb_s3board_core is
port (
I_SWI : out slv8; -- s3 switches
I_BTN : out slv4; -- s3 buttons
O_MEM_CE_N : in slv2; -- sram: chip enables (act.low)
O_MEM_BE_N : in slv4; -- sram: byte enables (act.low)
O_MEM_WE_N : in slbit; -- sram: write enable (act.low)
O_MEM_OE_N : in slbit; -- sram: output enable (act.low)
O_MEM_ADDR : in slv18; -- sram: address lines
IO_MEM_DATA : inout slv32 -- sram: data lines
);
end tb_s3board_core;
 
architecture sim of tb_s3board_core is
signal R_SWI : slv8 := (others=>'0');
signal R_BTN : slv4 := (others=>'0');
 
constant sbaddr_swi: slv8 := slv(to_unsigned( 16,8));
constant sbaddr_btn: slv8 := slv(to_unsigned( 17,8));
 
begin
MEM_L : entity work.is61lv25616al
port map (
CE_N => O_MEM_CE_N(0),
OE_N => O_MEM_OE_N,
WE_N => O_MEM_WE_N,
UB_N => O_MEM_BE_N(1),
LB_N => O_MEM_BE_N(0),
ADDR => O_MEM_ADDR,
DATA => IO_MEM_DATA(15 downto 0)
);
MEM_U : entity work.is61lv25616al
port map (
CE_N => O_MEM_CE_N(1),
OE_N => O_MEM_OE_N,
WE_N => O_MEM_WE_N,
UB_N => O_MEM_BE_N(3),
LB_N => O_MEM_BE_N(2),
ADDR => O_MEM_ADDR,
DATA => IO_MEM_DATA(31 downto 16)
);
proc_simbus: process (SB_VAL)
begin
if SB_VAL'event and to_x01(SB_VAL)='1' then
if SB_ADDR = sbaddr_swi then
R_SWI <= to_x01(SB_DATA(R_SWI'range));
end if;
if SB_ADDR = sbaddr_btn then
R_BTN <= to_x01(SB_DATA(R_BTN'range));
end if;
end if;
end process proc_simbus;
 
I_SWI <= R_SWI;
I_BTN <= R_BTN;
end sim;
/tb/tb_s3board_core.vbom
0,0 → 1,10
# libs
../../../vlib/slvtypes.vhd
../../../vlib/serport/serportlib.vbom
../../../vlib/simlib/simbus.vhd
# components
../../../vlib/serport/serport_uart_rx.vbom
../../../vlib/serport/serport_uart_tx.vbom
../../issi/is61lv25616al.vbom
# design
tb_s3board_core.vhd
/tb/tb_s3_sram_memctl.vbom
0,0 → 1,11
# libs
../../../vlib/slvtypes.vhd
../s3boardlib.vbom
../../../vlib/simlib/simlib.vhd
# components
../../../vlib/simlib/simclk.vbom
../../../vlib/simlib/simclkcnt.vbom
../../issi/is61lv25616al.vbom
${uut := ../s3_sram_memctl.vbom}
# design
tb_s3_sram_memctl.vhd
/tb/tb_s3_sram_memctl.vhd
0,0 → 1,356
-- $Id: tb_s3_sram_memctl.vhd 444 2011-12-25 10:04:58Z mueller $
--
-- Copyright 2007-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- Software Foundation, either version 2, or at your option any later version.
--
-- This program 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 General Public License
-- for complete details.
--
------------------------------------------------------------------------------
-- Module Name: tb_s3_sram_memctl - sim
-- Description: Test bench for s3_sram_memctl
--
-- Dependencies: vlib/simlib/simclk
-- vlib/simlib/simclkcnt
-- bplib/issi/is61lv25616al
-- s3_sram_memctl [UUT]
--
-- To test: s3_sram_memctl
--
-- Verified (with tb_s3_sram_memctl_stim.dat):
-- Date Rev Code ghdl ise Target Comment
-- 2007-12-16 101 _ssim 0.26 8.1.03 I27 xc3s1000 c:ok
-- 2007-12-16 101 - 0.26 - - c:ok
--
-- Target Devices: generic
-- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29
-- Revision History:
-- Date Rev Version Comment
-- 2011-12-23 444 1.1 use new simclk/simclkcnt
-- 2011-11-21 432 1.0.6 now numeric_std clean
-- 2010-05-23 293 1.0.5 output # busy cycles; change CHK pipeline logic
-- 2010-05-16 291 1.0.4 rename tb_memctl_s3sram->tb_s3_sram_memctl
-- 2008-03-24 129 1.0.3 CLK_CYCLE now 31 bits
-- 2008-02-17 117 1.0.2 use req,we rather req_r,req_w interface
-- 2008-01-20 113 1.0.1 rename memdrv -> memctl_s3sram
-- 2007-12-15 101 1.0 Initial version
------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_textio.all;
use std.textio.all;
 
use work.slvtypes.all;
use work.s3boardlib.all;
use work.simlib.all;
 
entity tb_s3_sram_memctl is
end tb_s3_sram_memctl;
 
architecture sim of tb_s3_sram_memctl is
signal CLK : slbit := '0';
signal RESET : slbit := '0';
signal REQ : slbit := '0';
signal WE : slbit := '0';
signal BUSY : slbit := '0';
signal ACK_R : slbit := '0';
signal ACK_W : slbit := '0';
signal ACT_R : slbit := '0';
signal ACT_W : slbit := '0';
signal ADDR : slv18 := (others=>'0');
signal BE : slv4 := (others=>'0');
signal DI : slv32 := (others=>'0');
signal DO : slv32 := (others=>'0');
signal O_MEM_CE_N : slv2 := (others=>'0');
signal O_MEM_BE_N : slv4 := (others=>'0');
signal O_MEM_WE_N : slbit := '0';
signal O_MEM_OE_N : slbit := '0';
signal O_MEM_ADDR : slv18 := (others=>'0');
signal IO_MEM_DATA : slv32 := (others=>'0');
 
signal R_MEMON : slbit := '0';
signal N_CHK_DATA : slbit := '0';
signal N_REF_DATA : slv32 := (others=>'0');
signal N_REF_ADDR : slv18 := (others=>'0');
signal R_CHK_DATA_AL : slbit := '0';
signal R_REF_DATA_AL : slv32 := (others=>'0');
signal R_REF_ADDR_AL : slv18 := (others=>'0');
signal R_CHK_DATA_DL : slbit := '0';
signal R_REF_DATA_DL : slv32 := (others=>'0');
signal R_REF_ADDR_DL : slv18 := (others=>'0');
signal CLK_STOP : slbit := '0';
signal CLK_CYCLE : integer := 0;
 
constant clock_period : time := 20 ns;
constant clock_offset : time := 200 ns;
constant setup_time : time := 5 ns;
constant c2out_time : time := 10 ns;
 
begin
 
CLKGEN : simclk
generic map (
PERIOD => clock_period,
OFFSET => clock_offset)
port map (
CLK => CLK,
CLK_STOP => CLK_STOP
);
 
CLKCNT : simclkcnt port map (CLK => CLK, CLK_CYCLE => CLK_CYCLE);
 
MEM_L : entity work.is61lv25616al
port map (
CE_N => O_MEM_CE_N(0),
OE_N => O_MEM_OE_N,
WE_N => O_MEM_WE_N,
UB_N => O_MEM_BE_N(1),
LB_N => O_MEM_BE_N(0),
ADDR => O_MEM_ADDR,
DATA => IO_MEM_DATA(15 downto 0)
);
MEM_U : entity work.is61lv25616al
port map (
CE_N => O_MEM_CE_N(1),
OE_N => O_MEM_OE_N,
WE_N => O_MEM_WE_N,
UB_N => O_MEM_BE_N(3),
LB_N => O_MEM_BE_N(2),
ADDR => O_MEM_ADDR,
DATA => IO_MEM_DATA(31 downto 16)
);
UUT : s3_sram_memctl
port map (
CLK => CLK,
RESET => RESET,
REQ => REQ,
WE => WE,
BUSY => BUSY,
ACK_R => ACK_R,
ACK_W => ACK_W,
ACT_R => ACT_R,
ACT_W => ACT_W,
ADDR => ADDR,
BE => BE,
DI => DI,
DO => DO,
O_MEM_CE_N => O_MEM_CE_N,
O_MEM_BE_N => O_MEM_BE_N,
O_MEM_WE_N => O_MEM_WE_N,
O_MEM_OE_N => O_MEM_OE_N,
O_MEM_ADDR => O_MEM_ADDR,
IO_MEM_DATA => IO_MEM_DATA
);
 
proc_stim: process
file fstim : text open read_mode is "tb_s3_sram_memctl_stim";
variable iline : line;
variable oline : line;
variable ok : boolean;
variable dname : string(1 to 6) := (others=>' ');
variable idelta : integer := 0;
variable iaddr : slv18 := (others=>'0');
variable idata : slv32 := (others=>'0');
variable ibe : slv4 := (others=>'0');
variable ival : slbit := '0';
variable nbusy : integer := 0;
 
begin
wait for clock_offset - setup_time;
 
file_loop: while not endfile(fstim) loop
 
readline (fstim, iline);
readcomment(iline, ok);
next file_loop when ok;
 
readword(iline, dname, ok);
if ok then
case dname is
when ".memon" => -- .memon
read_ea(iline, ival);
R_MEMON <= ival;
wait for 2*clock_period;
when ".reset" => -- .reset
write(oline, string'(".reset"));
writeline(output, oline);
RESET <= '1';
wait for clock_period;
RESET <= '0';
wait for 9*clock_period;
 
when ".wait " => -- .wait
read_ea(iline, idelta);
wait for idelta*clock_period;
when "read " => -- read
readgen_ea(iline, iaddr, 16);
readgen_ea(iline, idata, 16);
ADDR <= iaddr;
REQ <= '1';
WE <= '0';
 
writetimestamp(oline, CLK_CYCLE, ": stim read ");
writegen(oline, iaddr, right, 6, 16);
write(oline, string'(" "));
writegen(oline, idata, right, 9, 16);
 
nbusy := 0;
while BUSY = '1' loop
nbusy := nbusy + 1;
wait for clock_period;
end loop;
 
write(oline, string'(" nbusy="));
write(oline, nbusy, right, 2);
writeline(output, oline);
 
N_CHK_DATA <= '1', '0' after clock_period;
N_REF_DATA <= idata;
N_REF_ADDR <= iaddr;
 
wait for clock_period;
REQ <= '0';
when "write " => -- write
readgen_ea(iline, iaddr, 16);
read_ea(iline, ibe);
readgen_ea(iline, idata, 16);
ADDR <= iaddr;
BE <= ibe;
DI <= idata;
REQ <= '1';
WE <= '1';
writetimestamp(oline, CLK_CYCLE, ": stim write");
writegen(oline, iaddr, right, 6, 16);
writegen(oline, ibe , right, 5, 2);
writegen(oline, idata, right, 9, 16);
 
nbusy := 0;
while BUSY = '1' loop
nbusy := nbusy + 1;
wait for clock_period;
end loop;
 
write(oline, string'(" nbusy="));
write(oline, nbusy, right, 2);
writeline(output, oline);
 
wait for clock_period;
REQ <= '0';
when others => -- bad directive
write(oline, string'("?? unknown directive: "));
write(oline, dname);
writeline(output, oline);
report "aborting" severity failure;
end case;
else
report "failed to find command" severity failure;
end if;
 
testempty_ea(iline);
 
end loop; -- file fstim
 
wait for 10*clock_period;
 
writetimestamp(oline, CLK_CYCLE, ": DONE ");
writeline(output, oline);
 
CLK_STOP <= '1';
 
wait; -- suspend proc_stim forever
-- clock is stopped, sim will end
 
end process proc_stim;
 
proc_moni: process
variable oline : line;
begin
 
loop
wait until rising_edge(CLK);
 
if ACK_R = '1' then
writetimestamp(oline, CLK_CYCLE, ": moni ");
writegen(oline, DO, right, 9, 16);
if R_CHK_DATA_DL = '1' then
write(oline, string'(" CHECK"));
if R_REF_DATA_DL = DO then
write(oline, string'(" OK"));
else
write(oline, string'(" FAIL, exp="));
writegen(oline, R_REF_DATA_DL, right, 9, 16);
write(oline, string'(" for a="));
writegen(oline, R_REF_ADDR_DL, right, 5, 16);
end if;
R_CHK_DATA_DL <= '0';
end if;
writeline(output, oline);
end if;
 
if R_CHK_DATA_AL = '1' then
R_CHK_DATA_DL <= R_CHK_DATA_AL;
R_REF_DATA_DL <= R_REF_DATA_AL;
R_REF_ADDR_DL <= R_REF_ADDR_AL;
R_CHK_DATA_AL <= '0';
end if;
if N_CHK_DATA = '1' then
R_CHK_DATA_AL <= N_CHK_DATA;
R_REF_DATA_AL <= N_REF_DATA;
R_REF_ADDR_AL <= N_REF_ADDR;
end if;
end loop;
end process proc_moni;
 
 
proc_memon: process
variable oline : line;
begin
 
loop
wait until rising_edge(CLK);
 
if R_MEMON = '1' then
writetimestamp(oline, CLK_CYCLE, ": mem ");
write(oline, string'(" ce="));
write(oline, not O_MEM_CE_N, right, 2);
write(oline, string'(" be="));
write(oline, not O_MEM_BE_N, right, 4);
write(oline, string'(" we="));
write(oline, not O_MEM_WE_N, right);
write(oline, string'(" oe="));
write(oline, not O_MEM_OE_N, right);
write(oline, string'(" a="));
writegen(oline, O_MEM_ADDR, right, 5, 16);
write(oline, string'(" d="));
writegen(oline, IO_MEM_DATA, right, 8, 16);
writeline(output, oline);
end if;
end loop;
end process proc_memon;
 
 
end sim;
/tb/tb_s3_sram_memctl_stim.dat
0,0 → 1,176
# $Id: tb_s3_sram_memctl_stim.dat 290 2010-05-16 08:44:36Z mueller $
#
.memon 0
#
C write full word 16 cells
#
write 00000 1111 30201000
write 00001 1111 31211101
write 00002 1111 32221202
write 00003 1111 33231303
write 00004 1111 34241404
write 00005 1111 35251505
write 00006 1111 36261606
write 00007 1111 37271707
write 00008 1111 38281808
write 00009 1111 39291909
write 0000a 1111 3a2a1a0a
write 0000b 1111 3b2b1b0b
write 0000c 1111 3c2c1c0c
write 0000d 1111 3d2d1d0d
write 0000e 1111 3e2e1e0e
write 0000f 1111 3f2f1f0f
#
C read 16 cells
#
read 00000 30201000
read 00001 31211101
read 00002 32221202
read 00003 33231303
read 00004 34241404
read 00005 35251505
read 00006 36261606
read 00007 37271707
read 00008 38281808
read 00009 39291909
read 0000a 3a2a1a0a
read 0000b 3b2b1b0b
read 0000c 3c2c1c0c
read 0000d 3d2d1d0d
read 0000e 3e2e1e0e
read 0000f 3f2f1f0f
#
C write selected bytes in first 16 cells
#
write 00000 0000 70605040
write 00001 0001 71615141
write 00002 0010 72625242
write 00003 0011 73635343
write 00004 0100 74645444
write 00005 0101 75655545
write 00006 0110 76665646
write 00007 0111 77675747
write 00008 1000 78685848
write 00009 1001 79695949
write 0000a 1010 7a6a5a4a
write 0000b 1011 7b6b5b4b
write 0000c 1100 7c6c5c4c
write 0000d 1101 7d6d5d4d
write 0000e 1110 7e6e5e4e
write 0000f 1111 7f6f5f4f
#
C read back
#
read 00000 30201000
read 00001 31211141
read 00002 32225202
read 00003 33235343
read 00004 34641404
read 00005 35651545
read 00006 36665606
read 00007 37675747
read 00008 78281808
read 00009 79291949
read 0000a 7a2a5a0a
read 0000b 7b2b5b4b
read 0000c 7c6c1c0c
read 0000d 7d6d1d4d
read 0000e 7e6e5e0e
read 0000f 7f6f5f4f
#
C read and write with waits
#
.wait 3
write 00010 1111 30201000
.wait 2
write 00011 1111 31211101
.wait 1
write 00012 1111 32221202
write 00013 1111 33231303
#
.wait 3
read 00010 30201000
.wait 2
read 00011 31211101
.wait 1
read 0000e 7e6e5e0e
read 0000f 7f6f5f4f
#
C read and write mixed, with waits
#
.wait 2
write 00014 1111 34241404
.wait 2
read 00012 32221202
.wait 2
write 00015 1111 35251505
.wait 2
read 00013 33231303
#
.wait 1
write 00016 1111 36261606
.wait 1
read 00014 34241404
.wait 1
write 00017 1111 37271707
.wait 1
read 00015 35251505
#
write 00018 1111 38281808
read 00016 36261606
write 00019 1111 39291909
read 00017 37271707
#
.wait 2
write 0001a 1111 3a2a1a0a
write 0001b 1111 3b2b1b0b
.wait 2
read 00018 38281808
read 00019 39291909
.wait 2
write 0001c 1111 3c2c1c0c
write 0001d 1111 3d2d1d0d
.wait 2
read 0001a 3a2a1a0a
read 0001b 3b2b1b0b
#
.wait 1
write 0001e 1111 3e2e1e0e
write 0001f 1111 3f2f1f0f
.wait 1
read 0001c 3c2c1c0c
read 0001d 3d2d1d0d
.wait 1
write 00014 0100 74645444
write 00015 0101 75655545
.wait 1
read 0001e 3e2e1e0e
read 0001f 3f2f1f0f
#
write 00016 0110 76665646
write 00017 0111 77675747
read 00010 30201000
read 00011 31211101
write 00018 1000 78685848
write 00019 1001 79695949
read 00012 32221202
read 00013 33231303
#
write 0001a 1010 7a6a5a4a
write 0001b 1011 7b6b5b4b
write 0001c 1100 7c6c5c4c
read 00014 34641404
read 00015 35651545
read 00016 36665606
write 0001d 1101 7d6d5d4d
write 0001e 1110 7e6e5e4e
write 0001f 1111 7f6f5f4f
read 00017 37675747
read 00018 78281808
read 00019 79291949
read 0001a 7a2a5a0a
read 0001b 7b2b5b4b
read 0001c 7c6c1c0c
read 0001d 7d6d1d4d
read 0001e 7e6e5e0e
read 0001f 7f6f5f4f
/tb/s3board_fusp_dummy.vhd
0,0 → 1,78
-- $Id: s3board_fusp_dummy.vhd 336 2010-11-06 18:28:27Z mueller $
--
-- Copyright 2010- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- This program is free software; you may redistribute and/or modify it under
-- the terms of the GNU General Public License as published by the Free
-- Software Foundation, either version 2, or at your option any later version.
--
-- This program 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 General Public License
-- for complete details.
--
------------------------------------------------------------------------------
-- Module Name: s3board_fusp_dummy - syn
-- Description: s3board minimal target (base+fusp; serport loopback)
--
-- Dependencies: -
-- To test: tb_s3board_fusp
-- Target Devices: generic
-- Tool versions: xst 11.4; ghdl 0.26
-- Revision History:
-- Date Rev Version Comment
-- 2010-11-06 336 1.0.3 rename input pin CLK -> I_CLK50
-- 2010-05-21 292 1.0.2 rename _PM1_ -> _FUSP_
-- 2010-05-16 291 1.0.1 rename s3board_usp_dummy->s3board_fusp_dummy
-- 2010-05-01 286 1.0 Initial version (derived from s3board_dummy)
------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
 
use work.slvtypes.all;
use work.s3boardlib.all;
 
entity s3board_fusp_dummy is -- S3BOARD dummy (base+fusp; loopback)
-- implements s3board_fusp_aif
port (
I_CLK50 : in slbit; -- 50 MHz board clock
I_RXD : in slbit; -- receive data (board view)
O_TXD : out slbit; -- transmit data (board view)
I_SWI : in slv8; -- s3 switches
I_BTN : in slv4; -- s3 buttons
O_LED : out slv8; -- s3 leds
O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
O_MEM_ADDR : out slv18; -- sram: address lines
IO_MEM_DATA : inout slv32; -- sram: data lines
O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n
I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n
I_FUSP_RXD : in slbit; -- fusp: rs232 rx
O_FUSP_TXD : out slbit -- fusp: rs232 tx
);
end s3board_fusp_dummy;
 
architecture syn of s3board_fusp_dummy is
begin
 
O_TXD <= I_RXD;
O_FUSP_TXD <= I_FUSP_RXD;
O_FUSP_RTS_N <= I_FUSP_CTS_N;
 
SRAM : s3_sram_dummy -- connect SRAM to protection dummy
port map (
O_MEM_CE_N => O_MEM_CE_N,
O_MEM_BE_N => O_MEM_BE_N,
O_MEM_WE_N => O_MEM_WE_N,
O_MEM_OE_N => O_MEM_OE_N,
O_MEM_ADDR => O_MEM_ADDR,
IO_MEM_DATA => IO_MEM_DATA
);
end syn;
/tb/s3board_fusp_dummy.vbom
0,0 → 1,7
# libs
../../../vlib/slvtypes.vhd
../s3boardlib.vbom
# components
../s3_sram_dummy.vbom
# design
s3board_fusp_dummy.vhd
/tb/tb_s3_sram_memctl_ssim.vbom
0,0 → 1,4
# configure for _*sim case
uut = s3_sram_memctl_ssim.vhd
tb_s3_sram_memctl.vbom
@top:tb_s3_sram_memctl
/tb/tbw.dat
0,0 → 1,6
# $Id: tbw.dat 353 2011-01-02 21:02:48Z mueller $
#
[tb_s3board_dummy]
rlink_cext_fifo_rx = <fifo>
rlink_cext_fifo_tx = <fifo>
rlink_cext_conf = <null>
/tb/.cvsignore
0,0 → 1,13
tb_s3board_dummy
tb_s3board_dummy_[sft]sim
tb_s3board_dummy_ISim
tb_s3board_dummy_ISim_[sft]sim
tb_s3board_fusp_dummy
rlink_cext_fifo_rx
rlink_cext_fifo_tx
rlink_cext_conf
tb_s3_sram_memctl
tb_s3_sram_memctl_[sft]sim
tb_s3_sram_memctl_stim
tb_s3_sram_memctl_ISim
tb_s3_sram_memctl_ISim_[sft]sim
/tb
tb Property changes : Added: svn:ignore ## -0,0 +1,46 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log +tb_s3board_dummy +tb_s3board_dummy_[sft]sim +tb_s3board_dummy_ISim +tb_s3board_dummy_ISim_[sft]sim +tb_s3board_fusp_dummy +rlink_cext_fifo_rx +rlink_cext_fifo_tx +rlink_cext_conf +tb_s3_sram_memctl +tb_s3_sram_memctl_[sft]sim +tb_s3_sram_memctl_stim +tb_s3_sram_memctl_ISim +tb_s3_sram_memctl_ISim_[sft]sim Index: Makefile =================================================================== --- Makefile (nonexistent) +++ Makefile (revision 26) @@ -0,0 +1,31 @@ +# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ +# +# Revision History: +# Date Rev Version Comment +# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD +# 2011-08-13 405 1.1 use includes from rtl/make +# 2007-12-09 100 1.0.1 drop ISE_p definition +# 2007-09-16 83 1.0 Initial version +# +VBOM_all = $(wildcard *.vbom) +NGC_all = $(VBOM_all:.vbom=.ngc) +# +ifndef XTW_BOARD + XTW_BOARD=s3board +endif +include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk +# +.PHONY : all clean +# +all : $(NGC_all) +# +clean : ise_clean +# +#---- +# +include $(RETROBASE)/rtl/make/generic_xflow.mk +# +ifndef DONTINCDEP +include $(VBOM_all:.vbom=.dep_xst) +endif +# Index: s3_sram_dummy.vhd =================================================================== --- s3_sram_dummy.vhd (nonexistent) +++ s3_sram_dummy.vhd (revision 26) @@ -0,0 +1,56 @@ +-- $Id: s3_sram_dummy.vhd 426 2011-11-18 18:14:08Z mueller $ +-- +-- Copyright 2007-2010 by Walter F.J. Mueller +-- +-- This program is free software; you may redistribute and/or modify it under +-- the terms of the GNU General Public License as published by the Free +-- Software Foundation, either version 2, or at your option any later version. +-- +-- This program 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 General Public License +-- for complete details. +-- +------------------------------------------------------------------------------ +-- Module Name: s3_sram_dummy - syn +-- Description: s3board: SRAM protection dummy +-- +-- Dependencies: - +-- Test bench: - +-- Target Devices: generic +-- Tool versions: xst 8.1, 8.2, 9.1, 9.2, 11.4; ghdl 0.18-0.26 +-- Revision History: +-- Date Rev Version Comment +-- 2010-04-17 278 1.0.2 renamed from sram_dummy +-- 2007-12-09 101 1.0.1 use _N for active low +-- 2007-12-08 100 1.0 Initial version +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; + +use work.slvtypes.all; + +entity s3_sram_dummy is -- SRAM protection dummy + port ( + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32 -- sram: data lines + ); +end s3_sram_dummy; + + +architecture syn of s3_sram_dummy is +begin + + O_MEM_CE_N <= "11"; -- disable sram chips + O_MEM_BE_N <= "1111"; + O_MEM_WE_N <= '1'; + O_MEM_OE_N <= '1'; + O_MEM_ADDR <= (others=>'0'); + IO_MEM_DATA <= (others=>'0'); + +end syn; Index: s3boardlib.vhd =================================================================== --- s3boardlib.vhd (nonexistent) +++ s3boardlib.vhd (revision 26) @@ -0,0 +1,126 @@ +-- $Id: s3boardlib.vhd 426 2011-11-18 18:14:08Z mueller $ +-- +-- Copyright 2007-2011 by Walter F.J. Mueller +-- +-- This program is free software; you may redistribute and/or modify it under +-- the terms of the GNU General Public License as published by the Free +-- Software Foundation, either version 2, or at your option any later version. +-- +-- This program 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 General Public License +-- for complete details. +-- +------------------------------------------------------------------------------ +-- Package Name: s3boardlib +-- Description: S3BOARD components +-- +-- Dependencies: - +-- Tool versions: xst 8.1, 8.2, 9.1, 9.2, 11.4, 12.1; ghdl 0.18-0.29 +-- Revision History: +-- Date Rev Version Comment +-- 2011-07-09 391 1.3.5 move s3_rs232_iob_int_ext to bpgenlib +-- 2011-07-08 390 1.3.4 move s3_(dispdrv|humanio*) to bpgenlib +-- 2011-07-03 387 1.3.3 move s3_rs232_iob_(int|ext) to bpgenlib +-- 2010-12-30 351 1.3.2 use rblib; rename human s3_humanio_rri -> _rbus +-- 2010-11-06 336 1.3.1 rename input pin CLK -> I_CLK50 +-- 2010-06-03 300 1.3 add s3_humanio_rri (now needs rrilib) +-- 2010-05-21 292 1.2.2 rename _PM1_ -> _FUSP_ +-- 2010-05-16 291 1.2.1 rename memctl_s3sram -> s3_sram_memctl; _usp->_fusp +-- 2010-05-01 286 1.2 added s3board_usp_aif (base+pm1_rs232) +-- 2010-04-17 278 1.1.6 rename, prefix dispdrv,sram_summy with s3_; +-- add s3_rs232_iob_(int|ext|int_ext) +-- 2010-04-11 276 1.1.5 add DEBOUNCE for s3_humanio +-- 2010-04-10 275 1.1.4 add s3_humanio +-- 2008-02-17 117 1.1.3 memctl_s3sram: use req,we interface +-- 2008-01-20 113 1.1.2 rename memdrv -> memctl_s3sram +-- 2007-12-16 101 1.1.1 use _N for active low +-- 2007-12-09 100 1.1 add sram memory signals; sram_dummy; memdrv +-- 2007-09-23 84 1.0 Initial version +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; + +use work.slvtypes.all; + +package s3boardlib is + +component s3board_aif is -- S3BOARD, abstract iface, base + port ( + I_CLK50 : in slbit; -- 50 MHz board clock + I_RXD : in slbit; -- receive data (board view) + O_TXD : out slbit; -- transmit data (board view) + I_SWI : in slv8; -- s3 switches + I_BTN : in slv4; -- s3 buttons + O_LED : out slv8; -- s3 leds + O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low) + O_SEG_N : out slv8; -- 7 segment disp: segments (act.low) + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32 -- sram: data lines + ); +end component; + +component s3board_fusp_aif is -- S3BOARD, abstract iface, base+fusp + port ( + I_CLK50 : in slbit; -- 50 MHz board clock + I_RXD : in slbit; -- receive data (board view) + O_TXD : out slbit; -- transmit data (board view) + I_SWI : in slv8; -- s3 switches + I_BTN : in slv4; -- s3 buttons + O_LED : out slv8; -- s3 leds + O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low) + O_SEG_N : out slv8; -- 7 segment disp: segments (act.low) + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32; -- sram: data lines + O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n + I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n + I_FUSP_RXD : in slbit; -- fusp: rs232 rx + O_FUSP_TXD : out slbit -- fusp: rs232 tx + ); +end component; + +component s3_sram_dummy is -- SRAM protection dummy + port ( + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32 -- sram: data lines + ); +end component; + +component s3_sram_memctl is -- SRAM driver + port ( + CLK : in slbit; -- clock + RESET : in slbit; -- reset + REQ : in slbit; -- request + WE : in slbit; -- write enable + BUSY : out slbit; -- controller busy + ACK_R : out slbit; -- acknowledge read + ACK_W : out slbit; -- acknowledge write + ACT_R : out slbit; -- signal active read + ACT_W : out slbit; -- signal active write + ADDR : in slv18; -- address + BE : in slv4; -- byte enable + DI : in slv32; -- data in (memory view) + DO : out slv32; -- data out (memory view) + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32 -- sram: data lines + ); +end component; + +end package s3boardlib; Index: s3_sram_memctl.vhd =================================================================== --- s3_sram_memctl.vhd (nonexistent) +++ s3_sram_memctl.vhd (revision 26) @@ -0,0 +1,366 @@ +-- $Id: s3_sram_memctl.vhd 427 2011-11-19 21:04:11Z mueller $ +-- +-- Copyright 2007-2011 by Walter F.J. Mueller +-- +-- This program is free software; you may redistribute and/or modify it under +-- the terms of the GNU General Public License as published by the Free +-- Software Foundation, either version 2, or at your option any later version. +-- +-- This program 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 General Public License +-- for complete details. +-- +------------------------------------------------------------------------------ +-- Module Name: s3_sram_memctl - syn +-- Description: s3board: SRAM driver +-- +-- Dependencies: vlib/xlib/iob_reg_o +-- vlib/xlib/iob_reg_o_gen +-- vlib/xlib/iob_reg_io_gen +-- Test bench: tb/tb_s3_sram_memctl +-- fw_gen/tst_sram/s3board/tb/tb_tst_sram_s3 +-- Target Devices: generic +-- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29 +-- +-- Synthesized (xst): +-- Date Rev ise Target flop lutl lutm slic t peri +-- 2010-05-23 293 11.4 L68 xc3s1000-4 7 22 0 14 s 8.5 +-- 2008-02-16 116 8.2.03 I34 xc3s1000-4 5 30 0 17 s 7.0 +-- +-- Revision History: +-- Date Rev Version Comment +-- 2011-11-19 427 1.0.6 now numeric_std clean +-- 2010-06-03 299 1.0.5 add "KEEP" for data iob; +-- 2010-05-16 291 1.0.4 rename memctl_s3sram -> s3_sram_memctl +-- 2008-02-17 117 1.0.3 use req,we rather req_r,req_w interface +-- 2008-01-20 113 1.0.2 rename memdrv -> memctl_s3sram +-- 2007-12-15 101 1.0.1 use _N for active low; get ce/we clocking right +-- 2007-12-08 100 1.0 Initial version +-- +-- Timing of some signals: +-- +-- single read request: +-- +-- state |_idle |_read |_idle | +-- +-- CLK __|^^^|___|^^^|___|^^^|___|^ +-- +-- REQ _______|^^^^^|______________ +-- WE ____________________________ +-- +-- IOB_CE __________|^^^^^^^|_________ +-- IOB_OE __________|^^^^^^^|_________ +-- +-- DO oooooooooooooooooo|ddddddd|d +-- BUSY ____________________________ +-- ACK_R __________________|^^^^^^^|_ +-- +-- single write request: +-- +-- state |_idle |_write1|_write2|_idle | +-- +-- CLK __|^^^|___|^^^|___|^^^|___|^^^|___|^ +-- +-- REQ _______|^^^^^|______________ +-- WE _______|^^^^^|______________ +-- +-- IOB_CE __________|^^^^^^^^^^^^^^^|_________ +-- IOB_BE __________|^^^^^^^^^^^^^^^|_________ +-- IOB_OE ____________________________________ +-- IOB_WE ______________|^^^^^^^|_____________ +-- +-- BUSY __________|^^^^^^^|_________________ +-- ACK_W __________________|^^^^^^^|_________ +-- +------------------------------------------------------------------------------ + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use work.slvtypes.all; +use work.xlib.all; + +entity s3_sram_memctl is -- SRAM driver for S3BOARD + port ( + CLK : in slbit; -- clock + RESET : in slbit; -- reset + REQ : in slbit; -- request + WE : in slbit; -- write enable + BUSY : out slbit; -- controller busy + ACK_R : out slbit; -- acknowledge read + ACK_W : out slbit; -- acknowledge write + ACT_R : out slbit; -- signal active read + ACT_W : out slbit; -- signal active write + ADDR : in slv18; -- address + BE : in slv4; -- byte enable + DI : in slv32; -- data in (memory view) + DO : out slv32; -- data out (memory view) + O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) + O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) + O_MEM_WE_N : out slbit; -- sram: write enable (act.low) + O_MEM_OE_N : out slbit; -- sram: output enable (act.low) + O_MEM_ADDR : out slv18; -- sram: address lines + IO_MEM_DATA : inout slv32 -- sram: data lines + ); +end s3_sram_memctl; + + +architecture syn of s3_sram_memctl is + + type state_type is ( + s_idle, -- s_idle: wait for req + s_read, -- s_read: read cycle + s_write1, -- s_write1: write cycle, 1st half + s_write2, -- s_write2: write cycle, 2nd half + s_bta_r2w, -- s_bta_r2w: bus turn around: r->w + s_bta_w2r -- s_bta_w2r: bus turn around: w->r + ); + + type regs_type is record + state : state_type; -- state + ackr : slbit; -- signal ack_r + end record regs_type; + + constant regs_init : regs_type := ( + s_idle, + '0' -- ackr + ); + + signal R_REGS : regs_type := regs_init; -- state registers + signal N_REGS : regs_type := regs_init; -- next value state regs + + signal CLK_180 : slbit := '0'; + signal MEM_CE_N : slv2 := "00"; + signal MEM_BE_N : slv4 := "0000"; + signal MEM_WE_N : slbit := '0'; + signal MEM_OE_N : slbit := '0'; + signal ADDR_CE : slbit := '0'; + signal DATA_CEI : slbit := '0'; + signal DATA_CEO : slbit := '0'; + signal DATA_OE : slbit := '0'; + +begin + + CLK_180 <= not CLK; + + IOB_MEM_CE : iob_reg_o_gen + generic map ( + DWIDTH => 2, + INIT => '1') + port map ( + CLK => CLK, + CE => '1', + DO => MEM_CE_N, + PAD => O_MEM_CE_N + ); + + IOB_MEM_BE : iob_reg_o_gen + generic map ( + DWIDTH => 4, + INIT => '1') + port map ( + CLK => CLK, + CE => ADDR_CE, + DO => MEM_BE_N, + PAD => O_MEM_BE_N + ); + + IOB_MEM_WE : iob_reg_o + generic map ( + INIT => '1') + port map ( + CLK => CLK_180, + CE => '1', + DO => MEM_WE_N, + PAD => O_MEM_WE_N + ); + + IOB_MEM_OE : iob_reg_o + generic map ( + INIT => '1') + port map ( + CLK => CLK, + CE => '1', + DO => MEM_OE_N, + PAD => O_MEM_OE_N + ); + + IOB_MEM_ADDR : iob_reg_o_gen + generic map ( + DWIDTH => 18) + port map ( + CLK => CLK, + CE => ADDR_CE, + DO => ADDR, + PAD => O_MEM_ADDR + ); + + IOB_MEM_DATA : iob_reg_io_gen + generic map ( + DWIDTH => 32, + PULL => "KEEP") + port map ( + CLK => CLK, + CEI => DATA_CEI, + CEO => DATA_CEO, + OE => DATA_OE, + DI => DO, + DO => DI, + PAD => IO_MEM_DATA + ); + + proc_regs: process (CLK) + begin + + if rising_edge(CLK) then + if RESET = '1' then + R_REGS <= regs_init; + else + R_REGS <= N_REGS; + end if; + end if; + + end process proc_regs; + + proc_next: process (R_REGS, REQ, WE, BE) + + variable r : regs_type := regs_init; + variable n : regs_type := regs_init; + variable ibusy : slbit := '0'; + variable iackw : slbit := '0'; + variable iactr : slbit := '0'; + variable iactw : slbit := '0'; + variable imem_ce : slv2 := "00"; + variable imem_be : slv4 := "0000"; + variable imem_we : slbit := '0'; + variable imem_oe : slbit := '0'; + variable iaddr_ce : slbit := '0'; + variable idata_cei : slbit := '0'; + variable idata_ceo : slbit := '0'; + variable idata_oe : slbit := '0'; + + begin + + r := R_REGS; + n := R_REGS; + n.ackr := '0'; + + ibusy := '0'; + iackw := '0'; + iactr := '0'; + iactw := '0'; + + imem_ce := "00"; + imem_be := "1111"; + imem_we := '0'; + imem_oe := '0'; + iaddr_ce := '0'; + idata_cei := '0'; + idata_ceo := '0'; + idata_oe := '0'; + + case r.state is + when s_idle => -- s_idle: wait for req + if REQ = '1' then -- if IO requested + if WE = '0' then -- if READ requested + iaddr_ce := '1'; -- latch address and be's + imem_ce := "11"; -- ce SRAM next cycle + imem_oe := '1'; -- oe SRAM next cycle + n.state := s_read; -- next: read + else -- if WRITE requested + iaddr_ce := '1'; -- latch address and be's + idata_ceo := '1'; -- latch output data + idata_oe := '1'; -- oe FPGA next cycle + imem_ce := "11"; -- ce SRAM next cycle + imem_be := BE; -- use request BE's + n.state := s_write1; -- next: write 1st part + end if; + end if; + + when s_read => -- s_read: read cycle + idata_cei := '1'; -- latch input data + iactr := '1'; -- signal mem read + n.ackr := '1'; -- ACK_R next cycle + if REQ = '1' then -- if IO requested + if WE = '0' then -- if READ requested + iaddr_ce := '1'; -- latch address and be's + imem_ce := "11"; -- ce SRAM next cycle + imem_oe := '1'; -- oe SRAM next cycle + n.state := s_read; -- next: continue read + else -- if WRITE requested + iaddr_ce := '1'; -- latch address and be's + idata_ceo := '1'; -- latch output data + imem_be := BE; -- use request BE's + n.state := s_bta_r2w; -- next: bus turn around cycle + end if; + else + n.state := s_idle; -- next: idle if nothing to do + end if; + + when s_write1 => -- s_write1: write cycle, 1st half + ibusy := '1'; -- signal busy, unable to handle req + iactw := '1'; -- signal mem write + idata_oe := '1'; -- oe FPGA next cycle + imem_ce := "11"; -- ce SRAM next cycle + imem_we := '1'; -- we SRAM next shifted cycle + n.state := s_write2; -- next: write cycle, 2nd half + + when s_write2 => -- s_write2: write cycle, 2nd half + iactw := '1'; -- signal mem write + iackw := '1'; -- signal write acknowledge + idata_cei := '1'; -- latch input data (from SRAM) + if REQ = '1' then -- if IO requested + if WE = '1' then -- if WRITE requested + iaddr_ce := '1'; -- latch address and be's + idata_ceo := '1'; -- latch output data + idata_oe := '1'; -- oe FPGA next cycle + imem_ce := "11"; -- ce SRAM next cycle + imem_be := BE; -- use request BE's + n.state := s_write1; -- next: continue read + else -- if READ requested + iaddr_ce := '1'; -- latch address and be's + n.state := s_bta_w2r; -- next: bus turn around cycle + end if; + else + n.state := s_idle; -- next: idle if nothing to do + end if; + + when s_bta_r2w => -- s_bta_r2w: bus turn around: r->w + ibusy := '1'; -- signal busy, unable to handle req + iactw := '1'; -- signal mem write + imem_ce := "11"; -- ce SRAM next cycle + idata_oe := '1'; -- oe FPGA next cycle + n.state := s_write1; -- next: start write + + when s_bta_w2r => -- s_bta_w2r: bus turn around: w->r + ibusy := '1'; -- signal busy, unable to handle req + iactr := '1'; -- signal mem read + imem_ce := "11"; -- ce SRAM next cycle + imem_oe := '1'; -- oe SRAM next cycle + n.state := s_read; -- next: start read + + when others => null; + end case; + + N_REGS <= n; + + MEM_CE_N <= not imem_ce; + MEM_WE_N <= not imem_we; + MEM_BE_N <= not imem_be; + MEM_OE_N <= not imem_oe; + ADDR_CE <= iaddr_ce; + DATA_CEI <= idata_cei; + DATA_CEO <= idata_ceo; + DATA_OE <= idata_oe; + + BUSY <= ibusy; + ACK_R <= r.ackr; + ACK_W <= iackw; + ACT_R <= iactr; + ACT_W <= iactw; + + end process proc_next; + +end syn; Index: s3board_pins.ucf =================================================================== --- s3board_pins.ucf (nonexistent) +++ s3board_pins.ucf (revision 26) @@ -0,0 +1,133 @@ +## $Id: s3board_pins.ucf 402 2011-08-05 18:56:44Z mueller $ +## +## Pin locks for S3BOARD core functionality: +## - internal RS232 +## - human I/O (switches, buttons, leds, display) +## - sram +## +## Revision History: +## Date Rev Version Comment +## 2010-11-06 336 1.1.1 Rename CLK -> I_CLK50 +## 2008-05-25 150 1.1 Use DRIVE=6|SLEW=SLOW|KEEPER for memory data lines +## 2008-02-17 101 1.0 Initial version +## +## Note: default is DRIVE=12 | SLEW=SLOW +## +## clocks -------------------------------------------------------------------- +NET "I_CLK50" LOC = "t9" | IOSTANDARD=LVCMOS33; +## +## RS232 interface ----------------------------------------------------------- +NET "I_RXD" LOC = "t13" | IOSTANDARD=LVCMOS33; +NET "O_TXD" LOC = "r13" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=SLOW; +## +## switches and buttons ------------------------------------------------------ +NET "I_SWI<0>" LOC = "f12" | IOSTANDARD=LVCMOS33; +NET "I_SWI<1>" LOC = "g12" | IOSTANDARD=LVCMOS33; +NET "I_SWI<2>" LOC = "h14" | IOSTANDARD=LVCMOS33; +NET "I_SWI<3>" LOC = "h13" | IOSTANDARD=LVCMOS33; +NET "I_SWI<4>" LOC = "j14" | IOSTANDARD=LVCMOS33; +NET "I_SWI<5>" LOC = "j13" | IOSTANDARD=LVCMOS33; +NET "I_SWI<6>" LOC = "k14" | IOSTANDARD=LVCMOS33; +NET "I_SWI<7>" LOC = "k13" | IOSTANDARD=LVCMOS33; +## +NET "I_BTN<0>" LOC = "m13" | IOSTANDARD=LVCMOS33; +NET "I_BTN<1>" LOC = "m14" | IOSTANDARD=LVCMOS33; +NET "I_BTN<2>" LOC = "l13" | IOSTANDARD=LVCMOS33; +NET "I_BTN<3>" LOC = "l14" | IOSTANDARD=LVCMOS33; +## +## LEDs ---------------------------------------------------------------------- +NET "O_LED<0>" LOC = "k12" | IOSTANDARD=LVCMOS33; +NET "O_LED<1>" LOC = "p14" | IOSTANDARD=LVCMOS33; +NET "O_LED<2>" LOC = "l12" | IOSTANDARD=LVCMOS33; +NET "O_LED<3>" LOC = "n14" | IOSTANDARD=LVCMOS33; +NET "O_LED<4>" LOC = "p13" | IOSTANDARD=LVCMOS33; +NET "O_LED<5>" LOC = "n12" | IOSTANDARD=LVCMOS33; +NET "O_LED<6>" LOC = "p12" | IOSTANDARD=LVCMOS33; +NET "O_LED<7>" LOC = "p11" | IOSTANDARD=LVCMOS33; +NET "O_LED<*>" DRIVE=12 | SLEW=SLOW; +## +## 7 segment display --------------------------------------------------------- +NET "O_ANO_N<0>" LOC = "d14" | IOSTANDARD=LVCMOS33; +NET "O_ANO_N<1>" LOC = "g14" | IOSTANDARD=LVCMOS33; +NET "O_ANO_N<2>" LOC = "f14" | IOSTANDARD=LVCMOS33; +NET "O_ANO_N<3>" LOC = "e13" | IOSTANDARD=LVCMOS33; +NET "O_ANO_N<*>" DRIVE=12 | SLEW=SLOW; +## +NET "O_SEG_N<0>" LOC = "e14" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<1>" LOC = "g13" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<2>" LOC = "n15" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<3>" LOC = "p15" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<4>" LOC = "r16" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<5>" LOC = "f13" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<6>" LOC = "n16" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<7>" LOC = "p16" | IOSTANDARD=LVCMOS33; +NET "O_SEG_N<*>" DRIVE=12 | SLEW=SLOW; +## +## SRAM ---------------------------------------------------------------------- +NET "O_MEM_CE_N<0>" LOC = "p7" | IOSTANDARD=LVCMOS33; +NET "O_MEM_CE_N<1>" LOC = "n5" | IOSTANDARD=LVCMOS33; +NET "O_MEM_CE_N<*>" DRIVE=12 | SLEW=FAST; +## +NET "O_MEM_BE_N<0>" LOC = "p6" | IOSTANDARD=LVCMOS33; +NET "O_MEM_BE_N<1>" LOC = "t4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_BE_N<2>" LOC = "p5" | IOSTANDARD=LVCMOS33; +NET "O_MEM_BE_N<3>" LOC = "r4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_BE_N<*>" DRIVE=12 | SLEW=FAST; +## +NET "O_MEM_WE_N" LOC = "g3" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=FAST; +NET "O_MEM_OE_N" LOC = "k4" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=FAST; +## +NET "O_MEM_ADDR<0>" LOC = "l5" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<1>" LOC = "n3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<2>" LOC = "m4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<3>" LOC = "m3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<4>" LOC = "l4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<5>" LOC = "g4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<6>" LOC = "f3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<7>" LOC = "f4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<8>" LOC = "e3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<9>" LOC = "e4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<10>" LOC = "g5" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<11>" LOC = "h3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<12>" LOC = "h4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<13>" LOC = "j4" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<14>" LOC = "j3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<15>" LOC = "k3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<16>" LOC = "k5" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<17>" LOC = "l3" | IOSTANDARD=LVCMOS33; +NET "O_MEM_ADDR<*>" DRIVE=6 | SLEW=FAST; +## +NET "IO_MEM_DATA<0>" LOC = "n7" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<1>" LOC = "t8" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<2>" LOC = "r6" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<3>" LOC = "t5" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<4>" LOC = "r5" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<5>" LOC = "c2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<6>" LOC = "c1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<7>" LOC = "b1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<8>" LOC = "d3" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<9>" LOC = "p8" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<10>" LOC = "f2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<11>" LOC = "h1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<12>" LOC = "j2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<13>" LOC = "l2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<14>" LOC = "p1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<15>" LOC = "r1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<16>" LOC = "p2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<17>" LOC = "n2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<18>" LOC = "m2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<19>" LOC = "k1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<20>" LOC = "j1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<21>" LOC = "g2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<22>" LOC = "e1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<23>" LOC = "d1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<24>" LOC = "d2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<25>" LOC = "e2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<26>" LOC = "g1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<27>" LOC = "f5" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<28>" LOC = "c3" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<29>" LOC = "k2" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<30>" LOC = "m1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<31>" LOC = "n1" | IOSTANDARD=LVCMOS33; +NET "IO_MEM_DATA<*>" DRIVE=6 | SLEW=SLOW | KEEPER; +## Index: s3boardlib.vbom =================================================================== --- s3boardlib.vbom (nonexistent) +++ s3boardlib.vbom (revision 26) @@ -0,0 +1,3 @@ +# libs +../../vlib/slvtypes.vhd +s3boardlib.vhd Index: s3board_a2_pm1_rs232.ucf =================================================================== --- s3board_a2_pm1_rs232.ucf (nonexistent) +++ s3board_a2_pm1_rs232.ucf (revision 26) @@ -0,0 +1,15 @@ +## $Id: s3board_a2_pm1_rs232.ucf 295 2010-05-29 16:58:01Z mueller $ +## +## Revision History: +## Date Rev Version Comment +## 2010-05-22 293 1.1 Rename PM1 -> FUSP +## 2010-04-24 281 1.0 Initial version +## +## expansion connector A2 / slot PMod 1 / usage RS232 for FTDI USB serport --- +## +## PmodRS232: pins: 1 RTS; 2 CTS; 3 RXD; 4 TXD; 5 GND; 6 VCC +## +NET "O_FUSP_RTS_N" LOC = "c6" | IOSTANDARD=LVCMOS33 | DRIVE=4 | SLEW=SLOW; +NET "I_FUSP_CTS_N" LOC = "e7" | IOSTANDARD=LVCMOS33 | PULLDOWN; +NET "I_FUSP_RXD" LOC = "c7" | IOSTANDARD=LVCMOS33 | PULLUP; +NET "O_FUSP_TXD" LOC = "d7" | IOSTANDARD=LVCMOS33 | DRIVE=4 | SLEW=SLOW; Index: s3_sram_dummy.vbom =================================================================== --- s3_sram_dummy.vbom (nonexistent) +++ s3_sram_dummy.vbom (revision 26) @@ -0,0 +1,5 @@ +# libs +../../vlib/slvtypes.vhd +# components +# design +s3_sram_dummy.vhd Index: s3_sram_memctl.vbom =================================================================== --- s3_sram_memctl.vbom (nonexistent) +++ s3_sram_memctl.vbom (revision 26) @@ -0,0 +1,9 @@ +# libs +../../vlib/slvtypes.vhd +../../vlib/xlib/xlib.vhd +# components +../../vlib/xlib/iob_reg_o.vbom +../../vlib/xlib/iob_reg_o_gen.vbom +../../vlib/xlib/iob_reg_io_gen.vbom +# design +s3_sram_memctl.vhd Index: . =================================================================== --- . (nonexistent) +++ . (revision 26)
. Property changes : Added: svn:ignore ## -0,0 +1,33 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log

powered by: WebSVN 2.1.0

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