DPGEN_DFFT(3)
π DPGEN_DFFT β hey bestie, it's the Dynamic Flip-Flop with Scan-Path Macro-Generator π
okay so this is a page from the Alliance - genlib User's Manual, and it's about one very specific little macro-generator that lives in <genlib.h>. she's niche, she's dynamic, she's got a scan-path, and she's literally about to make your netlist pop off. let's get into it π«Ά
β¨ NAME β¨
DPGEN_DFFT β Dynamic Flip-Flop with Scan-Path Macro-Generator. yes bestie, that's the whole name, it's giving β¨ very descriptive β¨
πΈ SYNOPSIS πΈ
#include <genlib.h>
void GENLIB_MACRO (DPGEN_DFFT, char *modelname, long flags, long N);
so you pull in <genlib.h>, and then you call GENLIB_MACRO with DPGEN_DFFT as the macro, your modelname, some flags, and N. that's it. that's the whole incantation π
π¦ DESCRIPTION π¦
she generates a N bits dynamic flip-flop with scan-path named modelname. and when we say dynamic, we mean it for real for real β the two latches of this flip-flop are dynamic, i.e. the data is stored in a capacitor. no cap. it's literally holding your bits in a lil capacitor. iconic behavior honestly π₯
π how it works π
scanwhen set to'1'enables the scan-path mode. and listen β note that in scan-path mode, thewensignal is not effective. so don't come crying to me when your write enable does nothing in scan mode, i warned you πscin: the input of the scan-path. This terminal is different fromi0[0]. they are not the same thing bestie, do not conflate them π
The scout is q[N-1] (in the following example this is q[31]). so the last bit of the output is your scan-out. that's the vibe check.
wenwhen set to'1'enables the writing of the flip-flop. write enable does what it says on the tin β¨
π TERMINAL NAMES π
scan: scan-path mode (input, 1 bit).scin: scan path in (input, 1 bit).wen: write enable (input, 1 bit).ck: clock signal (input, 1 bit).i0: data input (N bits).q: output (N bits).vdd: power.vss: ground.
eight terminals, all accounted for, no notes π
π EXAMPLE π
here's the whole thing in action, and yes i'm keeping it character for character because that's the rule and also because it slays:
GENLIB_MACRO(DPGEN_DFFT, "model_dfft_32"
, F_BEHAV|F_PLACE
, 32
);
GENLIB_LOINS( "model_dfft_32"
, "instance1_dfft_32"
, "scan"
, "scin"
, "wen"
, "ck"
, "i0[31:0]"
, "q[31:0]" /* a[31] is "scout". */
, "vdd", "vss", NULL
);
so we're making a 32-bit one (N = 32), flags are F_BEHAV|F_PLACE, and then GENLIB_LOINS wires it all up. and see that comment? a[31] is "scout" β that's where your scan-out lives. chef's kiss π€
π SEE ALSO π
lowkey a reminder bestie: dynamic latches mean capacitor storage, so keep that in mind when you're thinking about your design. i'm not adding anything the page didn't say β just making sure you clocked it π
and that's the whole page!! this one came from ASIM/LIP6 and it's dated 30 July 2004 β yeah she's an elder but she still ate. mwah π π¦ β¨ π π
π¦ where this page comes from
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms