VHDL(5)
๐ NAME ๐
ALLIANCE VHDL Subset โ this is VHDL(5), section 5 of the manual, and bestie, it's the whole vibe check on what VHDL you're actually allowed to write in this house. ๐ซถ
๐ธ ORIGIN ๐ธ
Okay so this software belongs to the ALLIANCE CAD SYSTEM, which was developed by the ASIM team at the LIP6 laboratory of Universitรฉ Pierre et Marie CURIE, in Paris, France. ๐ฅโจ
- Web:
http://asim.lip6.fr/recherche/alliance/ - E-mail:
alliance-users@asim.lip6.fr
โจ DESCRIPTION โจ
The ALLIANCE VHDL subset is dedicated to digital synchronous circuits design, periodt. And the same subset is used for all of these:
- logic simulation (
asimut) - logic synthesis (
boom,boog,loon) - functional abstraction (
yagle) - formal proof (
proof)
The ALLIANCE VHDL subset is fully compatible with the IEEE VHDL standard Ref. 1076 (1987). Which means โ and this is the iconic part โ a VHDL description using the ALLIANCE subset can be simulated with any full-VHDL commercial compiler-simulator. No cap. ๐
Here follows the main restrictions of the ALLIANCE subset. Buckle up. ๐
๐ฆ External view vs internal view
The VHDL description of a circuit is made of two separate parts: the external view and the internal view.
The external view defines the name of the circuit and its interface. The interface of a circuit is a list of ports. Each port is specified by:
- its name
- its mode
- its type
- its constraint for an array
- its kind
The mode of a port depends only on the manner the port is used inside the circuit (in the internal view of the circuit):
- if the value of a port is to be read in the view of the description โ declare it with the mode
in - if the value of a port is to be written by the internal view โ declare it with the mode
out - if both of the above conditions are satisfied โ declare it with the mode
inout
Only structural and behavioural data flow are supported as internal view.
๐ Don't mix your vibes (structurally speaking)
In order to allow automatic translation from structural VHDL to other netlist formats (EDIF, ALLIANCE, COMPASS, ...), it is not possible to mix behavioural and structural description. That's the rule, bestie. ๐ค
Of course, a circuit, a subcircuit or a cell can have two different descriptions:
- a structural view may be defined in a file with a
.vstextension (seevst(5)) - a behavioural data flow description may be defined in a file with a
.vbeextension (seevbe(5))
A typical VHDL model will be made of a hierarchical structural description (a hierarchy of structural files) and, for each leaf cell, a behavioural description. It's giving tree structure, honestly. ๐ณ
๐ง Concurrent statements only, sorry
In a behavioural description, only concurrent statements (except process) are supported. Up to now, sequential statements are not allowed by the ALLIANCE VHDL compiler. ๐ญ
โฑ๏ธ After clauses
Timing information can be specified in behavioural descriptions using After clauses. However, those delays are currently only used for simulation. After clauses are supported but not used for synthesis and formal proof.
Lowkey important: if you were counting on your After delays to mean something during synthesis or formal proof โ they don't. Simulation only, babe. ๐
๐ The predefined types (user defined types? not supported, sorry)
A predefined set of types has been defined โ other user defined types are not supported:
bitโ the predefined standard bit type ('0'or'1')bit_vectorโ array ofbitmux_bitโ a resolved subtype ofbitusing themuxresolution function. This function checks that only one driver is actually connected to a signal. The effective value of the signal is the value of the active driver. If all drivers are disconnected, the value of the signal is'1'(pull up). A signal of typemux_bitmust be declared with the kindbus.mux_vectorโ array ofmux_bitwor_bitโ a resolved subtype ofbitusing theworresolution function. This function allows a signal be driven by more than one driver. All active drivers have to drive the same value. The effective value of the signal is the value of active drivers. If all drivers are disconnected, the value of the signal is'1'(pull up). A signal of typewor_bitmust be declared with the kindbus.wor_vectorโ array ofwor_bitreg_bitโ a resolved subtype ofbitusing theregresolution function. This function checks that only one driver is actually connected to a signal. The effective value of the signal is the value of the active driver. A signal of typereg_bitmust be declared with the kindregister(which makes the signal keep its previous value when all drivers are disconnected).reg_vectorโ array ofreg_bit
Not me reminding you again:mux_bitandwor_bitโ kindbus.reg_bitโ kindregister. Get it wrong and the compiler will simply not be your friend. ๐ซ
๐ฎ Coming soon (in the next ALLIANCE release)
In the next ALLIANCE release the VHDL subset will be largely extended: sequential statements, user defined types. So hold onto your wig. ๐
๐ SEE ALSO ๐
vst(5), vbe(5), asimut(1), boom(1), loon(1), boog(1), proof(1)
๐ BUG REPORT ๐
This tool is under development at the ASIM department of the LIP6 laboratory.
We need your feedback to improve documentation and tools. Fr fr โ tell them what's broken, they're literally asking. ๐ซถ
And that's a wrap on VHDL(5), brought to you by ASIM/LIP6, dated October 1, 1997. Yeah she's an elder but she ATE and left no crumbs. Stay compatible with Ref. 1076 (1987), stay concurrent, and slay. โจ๐ฆ๐
๐ฆ where this page comes from
- fedora 43: alliance-libs 5.1.1-35.20160506gitd8c05cd.fc42 ยท GPL-2.0-only
- fedora 43: alliance-libs 5.1.1-35.20160506gitd8c05cd.fc42 ยท GPL-2.0-only
- fedora 44: alliance-libs 5.1.1-35.20160506gitd8c05cd.fc42 ยท GPL-2.0-only
- fedora 44: alliance-libs 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