ARRAY(3)

πŸ“¦ version 5.1.1, in fedora 43, fedora 44

πŸ’– ARRAY(3) β€” the GENPAT functions era πŸ’–

okay bestie, sit down, hydrate, and let me tell you about ARRAY from the GENPAT functions manual (section 3, the library girlies 🫢). This is the one that lets you build a whole virtual vector out of a bunch of bit-by-bit signals, and honestly? iconic.


🌈 ORIGIN

This software belongs to the ALLIANCE CAD SYSTEM, developed by the ASIM team at the LIP6 laboratory of Université Pierre et Marie CURIE, in Paris, France. ✨


✨ SYNOPSIS

ARRAY ("ident", "ident", ..., ":nb_space", "format", type, option, "ident_group", 0);

that's the whole vibe. one call, so many arguments, no cap. πŸ’…


πŸŽ€ PARAMETERS

  • ident β€” the name of a connector, a signal or a register, followed by a number if it's part of a bused signal. 🚌 Every single ident has to be the same type β€” no mixing, bestie, that's the rule. And the name and the number must be separated by a blank space, or the number has to be parenthesized.
  • nb_space β€” how many blank spaces go between each group of values. Your options are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, or literally nothing. That's the menu, girl. πŸ“
  • format β€” the format used to represent the value attached to the connectors. X for Hexadecimal, O for Octal, B for Binary. pick your fighter ⭐
  • type β€” the type of the aggregate. REGISTER for Register, SIGNAL for Signal, OUT for Output, IN for Input, INOUT for Input/Output. REGISTER, SIGNAL, OUT, IN and INOUT are constants (defines) provided by genpat. 🧚
  • option β€” options for the connectors. "S" for a spied connector, or empty ("") for a normal connector. spy era πŸ‘‘
  • ident_group β€” the name of the array. heads up: the first ident is associated with the MSB of the array. the way that matters 😭

🌸 DESCRIPTION

So basically: this creates a virtual vector out of signals that all share the same type and format. the signals can be Inputs, Outputs, Inputs/Outputs, Registers, or Internal Signals β€” pick your lane.

A vector that's gonna be aggregated has to be declared bit per bit (it'll show up as a vector in the output file, cute right?). Outputs, Signals and Registers can be redeclared in a virtual vector. Inputs and Inputs/Outputs CANNOT be redeclared. nope. not allowed. πŸ™ˆ


πŸ’œ EXAMPLES

ARRAY ("cout", "s 9", "s 8", "s 7", ":2", "B", OUT, "S", "Y", 0);
  • format : Binary.
  • type : Output connector.
  • option : spied connector.

each group is separated from the others with 2 blank spaces.

result:

out Y ( cout, s (9 downto 7) ) B spy ;;;

ARRAY ("regt", "reg 9", ":2", "B", REGISTER, "", "Y", 0);
  • format : Binary.
  • type : Register.
  • option : none.

each group is separated from the others with 2 blank spaces.

result:

register   Y ( regt, reg (9 downto 9) ) B;;;

😭 WARNING

The ARRAY function from the 4.0 release has a new parameter (option). if you're on old docs, that's why it looks different, bestie. don't come for me.

πŸ¦‹ SEE ALSO

DECLAR(3), genpat(1), pat(5)

go read those next, they're lowkey part of the lore πŸ“š


πŸ’€ DIAGNOSTICS

okay so this is a variable number of parameters function β€” meaning it does NOT play about missing args. if you forget one or more parameters, one of these three things is gonna happen to you:

  1. Nothing bad happens, but your result file is erroneous. (silent L πŸ’€)
  2. You get asked for more parameters.
  3. You crash the program and produce a Segmentation Fault.

In all cases: check your C file for the missing parameter. fr fr, go look. πŸ”₯


🫢 BUG REPORT

This tool is under development at the ASIM department of the LIP6 laboratory.

We need your feedback to improve documentation and tools. so like… tell them things?? they're asking!! please!! πŸ™


and that's the whole page, bestie β€” this was ARRAY(3) from the GENPAT functions, brought to you by ASIM/LIP6, dated October 1, 1997. yeah, 1997. vintage. she's been serving since before we were born and she still eats πŸ’…βœ¨πŸ‘‘