[ { "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)" , "template" : "// iddr begin wire ~SIGD[~GENSYM[dataout_l][1]][7]; wire ~SIGD[~GENSYM[dataout_h][2]][7]; wire ~SIGD[~GENSYM[d][3]][7]; assign ~SYM[3] = ~ARG[7]; genvar ~GENSYM[i][8]; ~GENERATE for (~SYM[8]=0; ~SYM[8] < ~SIZE[~TYP[7]]; ~SYM[8]=~SYM[8]+1) begin : ~GENSYM[ddri_array][7] IDDR #( .DDR_CLK_EDGE(\"SAME_EDGE\"), .INIT_Q1(1'b0), .INIT_Q2(1'b0), .SRTYPE(~IF ~ISSYNC[2] ~THEN \"SYNC\" ~ELSE \"ASYNC\" ~FI) ) ~GENSYM[~COMPNAME_IDDR][9] ( .Q1(~SYM[1][~SYM[8]]), .Q2(~SYM[2][~SYM[8]]), .C(~ARG[4]), .CE(~IF ~ISACTIVEENABLE[6] ~THEN ~ARG[6] ~ELSE 1'b1 ~FI), .D(~SYM[3][~SYM[8]]), .R(~ARG[5]), .S(1'b0) ); end ~ENDGENERATE assign ~RESULT = {~SYM[2],~SYM[1]}; // 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)" , "template" : "// oddr begin wire ~SIGD[~GENSYM[datain_l][1]][7]; wire ~SIGD[~GENSYM[datain_h][2]][7]; wire ~SIGD[~GENSYM[q][3]][7]; assign ~SYM[1] = ~ARG[6]; assign ~SYM[2] = ~ARG[7]; genvar ~GENSYM[i][8]; ~GENERATE for (~SYM[8]=0; ~SYM[8] < ~SIZE[~TYP[7]]; ~SYM[8]=~SYM[8]+1) begin : ~GENSYM[ddro_array][7] ODDR #( .DDR_CLK_EDGE(\"SAME_EDGE\"), .INIT(1'b0), .SRTYPE(~IF ~ISSYNC[1] ~THEN \"SYNC\" ~ELSE \"ASYNC\" ~FI) ) ~GENSYM[~COMPNAME_ODDR][9] ( .Q(~SYM[3][~SYM[8]]), .C(~ARG[3]), .CE(~IF ~ISACTIVEENABLE[5] ~THEN ~ARG[5] ~ELSE 1'b1 ~FI), .D1(~SYM[1][~SYM[8]]), .D2(~SYM[2][~SYM[8]]), .R(~ARG[4]), .S(1'b0) ); end ~ENDGENERATE assign ~RESULT = ~SYM[3]; // oddr end" } } ]