Repository navigation
Releases: oscar30gt/pulse
Releases · oscar30gt/pulse
Release list
2.0.0
A new compiler: Pulse now reads a much larger subset of VHDL-2008, checks it like a real VHDL tool, and simulates designs with generics, integers, enumerations and numeric_std arithmetic. See "Supported Syntax" in the README for everything it accepts and simulates.
Compiler
- New VHDL-2008 tokenizer and parser, with located syntax errors for anything outside the supported subset.
- New semantic analyzer: types, scopes, overloading, subprogram rules, constant folding and the multi-driver rule are checked. Each file is analyzed into the
worklibrary, so an architecture can live in another file than its entity. - New linker: every component instance is bound to the entity of the same name (the default binding of LRM 7.3.3), and the component is checked against it.
- New elaborator: the design is lowered from its top entity to logic components, with one blueprint per set of generic values, like C++ templates.
- Predeclared subset of
std_logic_1164andnumeric_std: logical operators, reductions, shifts, arithmetic and comparisons onunsignedandsigned,resize,to_integer,to_unsigned,to_signed,rising_edgeandfalling_edge.
Simulation
- Integer types, enumerations, booleans,
unsignedandsigned, besidesstd_logicandstd_logic_vector. - Processes with variables,
caseandcase?, unrolledforloops withexitandnext, andwait on,wait untilandwait for. - Conditional and selected assignments (also inside processes), matching operators, aggregates, slices and type conversions.
Command line and debugger
--archnow defaults to the most recently analyzed architecture of the top entity (it used to bebehavioral), and every other entity uses its most recently analyzed architecture.- New
-Ologicoption, the only simulation mode for now:std_logicas0,1,XandZ. - Errors are printed the GCC way, with the file, line, column and stage, the source line and a caret, colored on a terminal (
NO_COLORturns colors off). Errors from linking and elaboration now name their file too. - Options can come before or after the project folder;
--helpand--versionwork in any position; a missing option value or a too large--endis reported. - The TUI shows every signal as its VHDL type says (vectors in hexadecimal and expandable into their bits, integers in decimal, enumerations by literal), and a single Esc now quits it on Linux and macOS.
Breaking changes
- Types are checked strictly, as the LRM says: for example, arithmetic on
std_logic_vectorneedsunsignedorsigned(numeric_std). - Inside VHDL, the second is written
sec(the LRM unit);--endkeeps acceptings. --archdefaults to the most recently analyzed architecture instead ofbehavioral.