idxTmplt[11] = "S1L50k_port1_Syn_VHDL" ; tmplt[11] = [ "-- S1L50000 Synchronous 1 port RAM library for Logic synthesis", "-- no latch at output to hold the data when XCS = 1.", "-- This Synchronous RAM is made with Asynchronous RAM + registers + gates.", "--", "-- SEIKO EPSON", "-- Ver. 1.0 2007/08/xx Mori, Masaru", "--# Created.", "", "library IEEE ;", "use IEEE.std_logic_1164.all ;", "", "entity %CellName% is", " generic( ADDR_W : integer := %WidthAddr% ; -- Address width", " DATA_W : integer := %WidthData% ); -- Data width", "", " port( FCS, CK, XCS, XWE : in std_logic ;", " %EachAddr , A% : in std_logic ;", " %EachData , D% : in std_logic ;", " %EachData , Y% : out std_logic );", "end %CellName% ;", "", "architecture rtl of %CellName% is", " component %RAMCell%", " port( CS, RW : in std_logic ;", " %EachAddrFull , A% : in std_logic ;", " %EachDataFull , D% : in std_logic ;", " %EachDataFull , Y% : out std_logic );", " end component ;", "", " component DL2", " port( A : in std_logic ;", " X : out std_logic );", " end component ;", "", " signal RegCS, RegXWE : std_logic ;", " signal A : std_logic_vector( ADDR_W - 1 downto 0 );", " signal D : std_logic_vector( DATA_W - 1 downto 0 );", " signal N_CKDL, N_RW, N_CS : std_logic ;", "", " signal tie0 : std_logic ;", " signal tie1 : std_logic ;", "", "begin", " process( CK )", " begin", " if( CK'event and CK = '1' )then", " RegCS <= not XCS ;", " RegXWE <= XWE ;", " A <= %EachAddr & A% ;", "%OneBitData% D(0) <= D0 ;", "%MulBitData% D <= %EachData & D% ;", " end if ;", " end process ;", "", " tie0 <= '0' ;", " tie1 <= '1' ;", "", " I_CKDL: DL2 port map( A => CK, X => N_CKDL );", " N_RW <= RegXWE or not N_CKDL ;", " N_CS <= RegCS and FCS ;", "", " I_RAM: %RAMCell% port map(", " CS => N_CS, RW => N_RW,", " %MapAddr VHDL A 0%,", " %MapData VHDL D 1%,", " %MapDataNB VHDL Y% );", "end rtl ;" ];