clash-lib-1.4.0: prims/vhdl/Clash_Xilinx_DDR.primitives
[ { "BlackBox" :
{ "name" : "Clash.Xilinx.DDR.iddr"
, "kind" : "Declaration"
, "type" :
"iddr
:: ( HasCallStack -- ARG[0]
, KnownConfi~ fast domf -- ARG[1]
, KnownConfi~ slow doms -- ARG[2]
, KnownNat m ) -- ARG[3]
-> Clock slow -- ARG[4]
-> Reset slow -- ARG[5]
-> Enable slow -- ARG[6]
-> Signal fast (BitVector m) -- ARG[7]
-> Signal slow (BitVector m,BitVector m)"
, "libraries" : ["UNISIM"]
, "imports" : ["UNISIM.vcomponents.all"]
, "template" :
"-- iddr begin
~GENSYM[~COMPNAME_IDDR][0] : block
signal ~GENSYM[dataout_l][1] : ~TYP[7];
signal ~GENSYM[dataout_h][2] : ~TYP[7];
signal ~GENSYM[d][3] : ~TYP[7];~IF ~ISACTIVEENABLE[4] ~THEN
signal ~GENSYM[ce_logic][4]: std_logic;~ELSE ~FI
begin~IF ~ISACTIVEENABLE[4] ~THEN
~SYM[4] <= '1' when (~ARG[6]) else '0';~ELSE ~FI
~SYM[3] <= ~ARG[7];
~GENSYM[gen_iddr][7] : for ~GENSYM[i][8] in ~SYM[3]'range generate
begin
~GENSYM[~COMPNAME_IDDR_inst][9] : IDDR
generic map (
DDR_CLK_EDGE => \"SAME_EDGE\",
INIT_Q1 => '0',
INIT_Q2 => '0',
SRTYPE => ~IF ~ISSYNC[2] ~THEN \"SYNC\" ~ELSE \"ASYNC\" ~FI)
port map (
Q1 => ~SYM[1](~SYM[8]), -- 1-bit output for positive edge of clock
Q2 => ~SYM[2](~SYM[8]), -- 1-bit output for negative edge of clock
C => ~ARG[4], -- 1-bit clock input
CE => ~IF ~ISACTIVEENABLE[6] ~THEN ~SYM[4] ~ELSE '1' ~FI, -- 1-bit clock enable input
D => ~SYM[3](~SYM[8]), -- 1-bit DDR data input
R => ~ARG[5], -- 1-bit reset
S => '0' -- 1-bit set
);
end generate;
~RESULT <= (~SYM[2], ~SYM[1]);
end block;
-- iddr# end"
}
}
, { "BlackBox" :
{ "name" : "Clash.Xilinx.DDR.oddr#"
, "kind" : "Declaration"
, "type" :
"oddr#
:: ( KnownConfi~ fast domf -- ARG[0]
, KnownConfi~ slow doms -- ARG[1]
, KnownNat m ) -- ARG[2]
=> Clock slow -- ARG[3]
-> Reset slow -- ARG[4]
-> Enable slow -- ARG[5]
-> Signal slow (BitVector m) -- ARG[6]
-> Signal slow (BitVector m) -- ARG[7]
-> Signal fast (BitVector m)"
, "libraries" : ["UNISIM"]
, "imports" : ["UNISIM.vcomponents.all"]
, "template" :
"-- oddr begin
~GENSYM[~COMPNAME_ODDR][0] : block
signal ~GENSYM[dataout_l][1] : ~TYPO;
signal ~GENSYM[dataout_h][2] : ~TYPO;
signal ~GENSYM[q][3] : ~TYPO;~IF ~ISACTIVEENABLE[5] ~THEN
signal ~GENSYM[ce_logic][4] : std_logic;~ELSE ~FI
begin~IF ~ISACTIVEENABLE[5] ~THEN
~SYM[4] <= '1' when (~ARG[5]) else '0';~ELSE ~FI
~SYM[1] <= ~ARG[6];
~SYM[2] <= ~ARG[7];
~GENSYM[gen_iddr][7] : for ~GENSYM[i][8] in ~SYM[3]'range generate
begin
~GENSYM[~COMPNAME_ODDR_inst][9] : ODDR
generic map(
DDR_CLK_EDGE => \"SAME_EDGE\",
INIT => '0',
SRTYPE => ~IF ~ISSYNC[2] ~THEN \"SYNC\" ~ELSE \"ASYNC\" ~FI)
port map (
Q => ~SYM[3](~SYM[8]), -- 1-bit DDR output
C => ~ARG[3], -- 1-bit clock input
CE => ~IF ~ISACTIVEENABLE[5] ~THEN ~SYM[4] ~ELSE '1' ~FI, -- 1-bit clock enable input
D1 => ~SYM[1](~SYM[8]), -- 1-bit data input (positive edge)
D2 => ~SYM[2](~SYM[8]), -- 1-bit data input (negative edge)
R => ~ARG[4], -- 1-bit reset input
S => '0' -- 1-bit set input
);
end generate;
~RESULT <= ~SYM[3];
end block;
-- oddr end"
}
}
]