DPGEN_ADSB2F(3)

πŸ“¦ version 5.1.1-unstable-2025-02, in nixos 26.05, nixpkgs unstable

πŸ’– DPGEN_ADSB2F β€” Adder/Substractor Macro-Generator πŸ’–

okay bestie, so this is a page from the Alliance - genlib User's Manual and it's literally the glow-up guide for one little macro-generator. it makes an adder. it also makes a substractor. it's giving both. let's get into it πŸ¦‹


✨ NAME ✨

DPGEN_ADSB2F β€” the Adder/Substractor Macro-Generator, no cap.


✨ SYNOPSIS ✨

#include  <genlib.h>

void GENLIB_MACRO (DPGEN_ADSB2F, char *modelname, long flags, long N);

✨ DESCRIPTION ✨

So basically it generates an N bits adder/substractor named modelname. that's the whole job. iconic of it honestly. πŸ’…

How it works (the tea β˜•):

  • if the add_sub signal is set to '0' an addition is performed, otherwise it's a substraction. one bit decides your whole destiny fr fr.
  • Operation can be either signed or unsigned. In unsigned mode c31 is the overflow, in unsigned mode you have to compute overflow by XORing c31 and c30. yes bestie, read that again, that's exactly what it says. πŸ™ˆ

🌸 TERMINAL NAMES 🌸

the terminals, in order, so you don't have to guess which one is which. main character lineup energy πŸ‘‘

  1. add_sub : select addition or substraction (input, 1 bit).
  2. c31 : carry out. In unsigned mode, this is the overflow (output, 1 bits).
  3. c30 : used to compute overflow in signed mode : overflow := c31 xor c30 (output, 1 bits).
  4. i1 : first operand (input, N bits).
  5. i0 : second operand (input, N bits).
  6. q : output (N bits).
  7. vdd : power.
  8. vss : ground.

πŸŽ€ EXAMPLE πŸŽ€

look at her go, an actual 32-bit one πŸ“:

GENLIB_MACRO(DPGEN_ADSB2F, "model_adsb2f_32"
                            , F_BEHAV|F_PLACE
                            , 32
                            );

GENLIB_LOINS( "model_adsb2f_32"
            , "instance1_adsb2f_32"
            , "add_sub"
            , "c32"
            , "c31"
            , "i1[31:0]"
            , "i0[31:0]"
            ,  "q[31:0]"
            , "vdd", "vss", NULL
            );
not me noticing that "c32" in there, the macro only ever told you about c31 and c30... I'm just saying what I see bestie, the example is the example πŸ™ˆ

πŸ’œ SEE ALSO πŸ’œ


and that's the whole page, you ate it πŸ’– if you wanna know who wrote this down: it's the fine folks at ASIM/LIP6, and this little baddie is dated 30 July 2004. periodt. πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from